diff --git a/.github/workflows/test_gridpath.yml b/.github/workflows/test_gridpath.yml index ed4ecf938e..8afdcd5a4d 100644 --- a/.github/workflows/test_gridpath.yml +++ b/.github/workflows/test_gridpath.yml @@ -2,6 +2,12 @@ # It installs Python dependencies (including the HiGHS solver via highspy), runs # the GridPath test suite with coverage, and sends coverage results to coveralls # We run this on Linux, MacOS, and Windows with Python 3.11, 3.12, 3.13, and 3.14 +# The suite runs via scripts/run_tests_parallel.py: a pytest-xdist lane for the +# tests that are safe to run concurrently, plus serial lanes for the tests that +# share on-disk state +# Pull requests run a reduced matrix (each OS once, the oldest and the +# coverage Python); pushes to main/develop and the nightly run cover the full +# OS x Python matrix name: test-suite @@ -18,9 +24,9 @@ jobs: runs-on: ${{ matrix.os }} strategy: - matrix: - os: [windows-latest, macos-latest, ubuntu-latest] - python-version: [ "3.11", "3.12", "3.13", "3.14" ] + # Reduced matrix on pull requests (each OS once, plus the oldest + # Python and the coverage cell); full OS x Python matrix otherwise + matrix: ${{ github.event_name == 'pull_request' && fromJSON('{"include":[{"os":"ubuntu-latest","python-version":"3.11"},{"os":"ubuntu-latest","python-version":"3.13"},{"os":"macos-latest","python-version":"3.13"},{"os":"windows-latest","python-version":"3.14"}]}') || fromJSON('{"os":["windows-latest","macos-latest","ubuntu-latest"],"python-version":["3.11","3.12","3.13","3.14"]}') }} steps: - uses: actions/checkout@v4 @@ -32,17 +38,22 @@ jobs: uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} + cache: pip + # Key the pip cache on pyproject.toml, where the dependencies are + # pinned (the root requirements.txt is a freeze snapshot, not what + # the install step uses) + cache-dependency-path: pyproject.toml - name: Install Python dependencies run: | - python -m pip install .[coverage] --upgrade pip + python -m pip install .[coverage,parallel_tests] --upgrade pip - name: Test GridPath w/o coverage on all but Linux with Python 3.13 if: ${{ runner.os == 'Windows' || runner.os == 'macOS' || matrix.python-version != '3.13' }} run: | - python -m unittest discover tests + python scripts/run_tests_parallel.py - name: Test GridPath with coverage if: ${{ runner.os == 'Linux' && matrix.python-version == '3.13' }} run: | - coverage run -m unittest discover tests + python scripts/run_tests_parallel.py --coverage - name: Send coverage results to Coveralls env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/CITATION.cff b/CITATION.cff index ca0d6a1696..fb399ae4ac 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -17,8 +17,8 @@ abstract: >- GridPath is a versatile simulation and optimization platform for power-system planning and operations, capable of production-cost, capacity-expansion, asset-valuation, and reliability modeling. -version: "v2026.7.1" -date-released: 2026-07-20 +version: "v2026.8.0" +date-released: 2026-08-03 license: Apache-2.0 doi: 10.5281/zenodo.5822994 repository-code: "https://github.com/sylvan-energy/gridpath" diff --git a/README.md b/README.md index b479961786..a0d1df2632 100644 --- a/README.md +++ b/README.md @@ -57,4 +57,4 @@ pip install .[all] If you use GridPath, please cite it as follows (APA): > Mileva, A., De Moor, G., Deshmukh, R., & The GridPath Contributors. (2026). -> *GridPath* (Version 2026.7.1) [Computer software]. https://doi.org/10.5281/zenodo.5822994 +> *GridPath* (Version 2026.8.0) [Computer software]. https://doi.org/10.5281/zenodo.5822994 diff --git a/db/common_functions.py b/db/common_functions.py index 2d213556ff..42b012d78a 100644 --- a/db/common_functions.py +++ b/db/common_functions.py @@ -20,6 +20,19 @@ import time import traceback +# Python 3.12 deprecated sqlite3's implicit datetime/date adapters and the +# TIMESTAMP/DATE converters used with detect_types=PARSE_DECLTYPES; +# register equivalents that preserve the storage format the implicit ones +# used ("YYYY-MM-DD HH:MM:SS[.ffffff]", with a space separator) +sqlite3.register_adapter(datetime.date, lambda val: val.isoformat()) +sqlite3.register_adapter(datetime.datetime, lambda val: val.isoformat(" ")) +sqlite3.register_converter( + "date", lambda val: datetime.date.fromisoformat(val.decode()) +) +sqlite3.register_converter( + "timestamp", lambda val: datetime.datetime.fromisoformat(val.decode()) +) + def connect_to_database(db_path="../db/io.db", timeout=5, detect_types=0): """ diff --git a/db/csvs_test_examples/csv_structure.csv b/db/csvs_test_examples/csv_structure.csv index 61932db1f2..35f4eee877 100644 --- a/db/csvs_test_examples/csv_structure.csv +++ b/db/csvs_test_examples/csv_structure.csv @@ -219,7 +219,7 @@ water/reservoirs,water,water_node_reservoir_scenario_id,system_water_node_reserv water/flows,water,water_flow_scenario_id,system_water_flows,simple,,0,,,,, water/flows/tmp_flow_bounds,water,water_flow_timepoint_bounds_scenario_id,system_water_flows_timepoint_bounds,simple,,1,water_link,,,inputs_system_water_flows,water_flow_scenario_id water/flows/hrz_flow_bounds,water,water_flow_horizon_bounds_scenario_id,system_water_flows_horizon_bounds,simple,,1,water_link,,,inputs_system_water_flows,water_flow_scenario_id -water/flows/hrz_flow_bounds/upstream_node_map,water,water_flow_horizon_bounds_scenario_id,system_water_flows_horizon_bounds_upstream_node_map,simple,,1,water_link,,,inputs_system_water_flows,water_flow_scenario_id +water/flows/upstream_node_map,water,water_flow_upstream_node_map_scenario_id,system_water_flows_upstream_node_map,simple,,1,water_link,,,inputs_system_water_flows,water_flow_scenario_id water/flows/ramp_limits,water,water_flow_ramp_limit_scenario_id,system_water_flow_ramp_limits,simple,,1,water_link,,,inputs_system_water_flows,water_flow_scenario_id water/flows/ramp_limits/bt_hrz_values,water,water_flow_ramp_limit_scenario_id,system_water_flow_ramp_limit_bt_hrz_values,simple,,1,water_link,,,inputs_system_water_flows,water_flow_scenario_id water/powerhouses,water,water_powerhouse_scenario_id,system_water_powerhouses,simple,,0,,,,, diff --git a/db/csvs_test_examples/scenarios.csv b/db/csvs_test_examples/scenarios.csv index 5fb2ae9b57..e863f5cf2d 100644 --- a/db/csvs_test_examples/scenarios.csv +++ b/db/csvs_test_examples/scenarios.csv @@ -1,160 +1,160 @@ -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_simple_tmp_emissions,test_tx_simple_additive,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,2periods_new_build_cumulative_and_vintage_min_max,2periods_new_build_fin_lifetime,2periods_new_build_simple_prm_w_energy_only,2periods_new_build_simple_prm_w_energy_only_deliv_cap_limit,test_w_storage_w_soc_penalty,test_w_storage_w_soc_last_tmp_penalty,single_stage_prod_cost_linked_subproblems_w_hydro,test_new_solar_itc,test_new_build_storage_itc,2periods_new_build_simple_prm_2loadzones,2periods_new_build_simple_prm_2loadzones_newtx_w_transfers,test_tx_targets,test_w_flex_load,2periods_new_build_simple_prm_2loadzones_newtx_w_transfers_w_costs,test_new_solar_w_relative_capacity_instead_of_potential,2periods_new_build_2zones_transmission_w_hurdle_rates,2periods_new_build_2zones_transmission_w_hurdle_rates_by_timepoint,2periods_new_build_2zones_transmission_w_hurdle_rates_by_timepoint_and_period,2periods_new_build_simple_prm_2loadzones_newtx_w_transfers_w_subsidies,test_new_build_storage_itc_single_superperiod,test_w_storage_starting_soc,test_w_nonfuel_emissions,test_new_solar_carbon_credits,test_performance_standard_carbon_credits,test_new_solar_carbon_tax_w_carbon_credits,test_new_solar_carbon_credits_w_sell,test_performance_standard_carbon_credits_w_cap_no_credits_mapping,single_stage_prod_cost_w_spinup_lookahead,test_new_solar_carbon_credits_w_buy,test_new_solar_carbon_credits_w_buy_and_sell,test_tx_targets_max,ra_toolkit_monte_carlo,ra_toolkit_sync,2periods_nuclear_var_cost_by_period_same,2periods_nuclear_var_cost_by_period_diff,ra_toolkit_sync_single_year,test_performance_standard_power,test_performance_standard_both,test_new_instantaneous_penetration,test_tx_flow_w_simflow,hydro_system,hydro_system_exog_elev,hydro_system_exog_elev_w_travel_time,ra_toolkit_sync_single_year_w_hydro_instead_of_weather_profile,2periods_nuclear_var_cost_by_timepoint_same,2periods_nuclear_var_cost_by_timepoint_diff,test_w_storage_wind_as_energy,test_w_hydro_as_energy_no_reserves,test_w_hydro_no_reserves,test_w_lf,test_w_lf_w_demand_charges,test_w_lf_only,test_w_lf_only_and_prices,2periods_new_build_2zones_loadcomponents,test_w_lf_only_energy_potential_limit,test_w_hydro_as_slice_candidate,test_w_energy_products,test_w_energy_products_group_limits,2periods_new_build_generic_policy,open_data,hydro_system_exog_elev_w_travel_time_and_max_halfday_flows,hydro_system_w_ramp_limits,test_w_bt_hrz_avl,hydro_system_exog_elev_w_gen_ramp_limits,dsm_examples,test_w_hydro_ramp_limits,2periods_new_build_generic_policy_recs,test_markets_w_tmp_total_limits,test_markets_w_prd_total_limits,test_new_build_storage_losses_limit,test_inertia_reserves,test_carbon_credits_purchase_limits,test_w_no_prj_av_sid_specified,test_subproblem_builtin_horizons,2periods_subproblem_period_builtin_horizons,single_stage_prod_cost_w_startup_limit,2periods_new_build_2zones_new_build_transmission_stochastic,generic_policy_sod_test,generic_policy_sod_test_w_annual_rps,test_new_build_gen_var_stor_hyb_as_pwr_grp,test_w_monthly_prj_derates,ra_toolkit_sync_temporal_structure_overwrite,2periods_new_build_generic_policy_w_tx_losses,2periods_new_build_2zones_transmission_w_losses_curtailment_cost,2periods_new_build_rps_w_tx_losses,hydro_system_exog_elev_w_binding_tmp_flow_max,hydro_system_exog_elev_w_flow_and_volume_violations,hydro_system_exog_elev_w_bt_hrz_inflows,hydro_system_exog_elev_w_hrz_only_inflows,2horizons_w_stor_stress_hrz -of_transmission,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,,,,,,,1,1,,,,,1,1,1,1,,,,,,,,,,,,,,,,,1,1,1,,1,,,,,,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_transmission_hurdle_rates,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -of_transmission_hurdle_rates_by_timepoint,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -of_simultaneous_flow_limits,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +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_simple_tmp_emissions,test_tx_simple_additive,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,2periods_new_build_cumulative_and_vintage_min_max,2periods_new_build_fin_lifetime,2periods_new_build_simple_prm_w_energy_only,2periods_new_build_simple_prm_w_energy_only_deliv_cap_limit,test_w_storage_w_soc_penalty,test_w_storage_w_soc_last_tmp_penalty,single_stage_prod_cost_linked_subproblems_w_hydro,test_new_solar_itc,test_new_build_storage_itc,2periods_new_build_simple_prm_2loadzones,2periods_new_build_simple_prm_2loadzones_newtx_w_transfers,test_tx_targets,test_w_flex_load,2periods_new_build_simple_prm_2loadzones_newtx_w_transfers_w_costs,test_new_solar_w_relative_capacity_instead_of_potential,2periods_new_build_2zones_transmission_w_hurdle_rates,2periods_new_build_2zones_transmission_w_hurdle_rates_by_timepoint,2periods_new_build_2zones_transmission_w_hurdle_rates_by_timepoint_and_period,2periods_new_build_simple_prm_2loadzones_newtx_w_transfers_w_subsidies,test_new_build_storage_itc_single_superperiod,test_w_storage_starting_soc,test_w_nonfuel_emissions,test_new_solar_carbon_credits,test_performance_standard_carbon_credits,test_new_solar_carbon_tax_w_carbon_credits,test_new_solar_carbon_credits_w_sell,test_performance_standard_carbon_credits_w_cap_no_credits_mapping,single_stage_prod_cost_w_spinup_lookahead,test_new_solar_carbon_credits_w_buy,test_new_solar_carbon_credits_w_buy_and_sell,test_tx_targets_max,ra_toolkit_monte_carlo,ra_toolkit_sync,2periods_nuclear_var_cost_by_period_same,2periods_nuclear_var_cost_by_period_diff,ra_toolkit_sync_single_year,test_performance_standard_power,test_performance_standard_both,test_new_instantaneous_penetration,test_tx_flow_w_simflow,hydro_system,hydro_system_exog_elev,hydro_system_exog_elev_w_travel_time,ra_toolkit_sync_single_year_w_hydro_instead_of_weather_profile,2periods_nuclear_var_cost_by_timepoint_same,2periods_nuclear_var_cost_by_timepoint_diff,test_w_storage_wind_as_energy,test_w_hydro_as_energy_no_reserves,test_w_hydro_no_reserves,test_w_lf,test_w_lf_w_demand_charges,test_w_lf_only,test_w_lf_only_and_prices,2periods_new_build_2zones_loadcomponents,test_w_lf_only_energy_potential_limit,test_w_hydro_as_slice_candidate,test_w_energy_products,test_w_energy_products_group_limits,2periods_new_build_generic_policy,open_data,hydro_system_exog_elev_w_travel_time_and_max_halfday_flows,hydro_system_w_ramp_limits,test_w_bt_hrz_avl,hydro_system_exog_elev_w_gen_ramp_limits,dsm_examples,test_w_hydro_ramp_limits,2periods_new_build_generic_policy_recs,test_markets_w_tmp_total_limits,test_markets_w_prd_total_limits,test_new_build_storage_losses_limit,test_inertia_reserves,test_carbon_credits_purchase_limits,test_w_no_prj_av_sid_specified,test_subproblem_builtin_horizons,2periods_subproblem_period_builtin_horizons,single_stage_prod_cost_w_startup_limit,2periods_new_build_2zones_new_build_transmission_stochastic,generic_policy_sod_test,generic_policy_sod_test_w_annual_rps,test_new_build_gen_var_stor_hyb_as_pwr_grp,test_w_monthly_prj_derates,ra_toolkit_sync_temporal_structure_overwrite,2periods_new_build_generic_policy_w_tx_losses,2periods_new_build_2zones_transmission_w_losses_curtailment_cost,2periods_new_build_rps_w_tx_losses,hydro_system_exog_elev_w_binding_tmp_flow_max,hydro_system_exog_elev_w_flow_and_volume_violations,hydro_system_exog_elev_w_bt_hrz_inflows,hydro_system_exog_elev_w_hrz_only_inflows,2horizons_w_stor_stress_hrz,hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold +of_transmission,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,,,,,,,1,1,,,,,1,1,1,1,,,,,,,,,,,,,,,,,1,1,1,,1,,,,,,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_transmission_hurdle_rates,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +of_transmission_hurdle_rates_by_timepoint,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +of_simultaneous_flow_limits,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,,1,1,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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,,1,1,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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,,1,1,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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,,1,1,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,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,1,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,, -of_inertia_reserves,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,, -of_period_energy_target,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,,,,,,,,,,,,,,,,,1,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,, -of_horizon_energy_target,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -of_instantaneous_penetration,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -of_transmission_target,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -of_carbon_cap,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,1,1,1,1,,,,,,,,,,,,,,,,,,,,,1,,,,,,,1,,1,1,1,,,,,,,,,,,,,,,,1,,,,,,,,,,,1,,,1,1,,1,1,1,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -of_track_carbon_imports,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,1,1,1,1,,,,,,,,,,,,,,,,,,,,,1,,,,,,,1,,1,1,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -of_carbon_tax,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,, -of_performance_standard,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,1,,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -of_carbon_credits,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,, -of_fuel_burn_limit,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -of_subsidies,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -of_policy,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,1,,,,,,,,,,,1,1,,,,1,,,,,,, -of_prm,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,1,1,,,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -of_local_capacity,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -of_capacity_transfers,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -of_elcc_surface,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -of_deliverability,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -of_markets,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,, -of_water,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,,,,,,,,,,,,,,,,,,1,1,,1,,,,,,,,,,,,,,,,,,,,,,1,1,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,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,6,6,6,6,1,1,8,11,12,6,6,15,1,6,1,6,6,6,14,13,1,1,1,1,1,3,1,16,3,3,15,17,18,6,6,19,1,1,6,1,20,20,20,19,6,6,1,1,1,1,1,1,1,6,1,1,1,1,6,21,20,20,1,20,20,1,6,1,1,3,1,1,1,22,23,4,24,25,25,3,1,18,6,6,6,20,20,20,20,2 -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,2,2,2,2,2,2,1,1,1,1,1,1,1,2,2,1,1,1,1,3,3,3,3,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,3,1,2,2,1,1,1,1,2,1,1,1,1,1,1,1,1,1,2,2,3,1,2,1,2,2,2,2,1,1,1,1,2,1,1,2,1,1,1,3,1,1,1,1,1,2,2,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,2,2,1,1,1,1,1 -load_balance_scenario_id,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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,4,1,1,4,1,1,1,1,1,1,1,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,1,1,1,1,1,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,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,2,2,2,2,1,1,1,1,1,2,2,1,1,2,1,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,6,6,1,1,6,1,1,3,1,7,7,7,6,1,1,1,1,1,1,1,1,1,5,1,1,1,1,3,8,7,7,1,7,9,1,3,1,1,1,1,1,1,1,1,1,10,14,14,1,1,6,2,2,2,7,7,7,7,15 -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,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,10,10,10,10,2,2,3,4,6,10,10,16,22,10,4,12,12,12,10,6,2,1,4,15,4,4,15,1,4,4,16,23,23,1,1,23,15,15,13,16,24,24,24,23,1,1,25,26,3,27,27,28,28,11,28,29,30,30,13,31,24,24,1,24,32,3,33,1,1,6,34,4,1,1,1,1,12,35,35,36,1,23,37,12,37,24,24,24,24,38 -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,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,1,1,1,1,22,23,7,1,1,1,1,1,1,1,1,1,1,1,1,1,24,25,1,16,1,1,16,7,1,1,1,26,26,27,28,26,16,16,1,1,1,1,1,29,30,31,32,33,1,1,34,1,35,1,1,36,37,37,1,38,1,1,1,40,39,41,1,1,1,42,43,1,1,44,45,46,1,47,47,1,1,26,1,1,1,1,1,1,1,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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,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,4,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,5,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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,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,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,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,2,,,,,,1,1,,,1,,,,,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,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,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,3,1,1,3,1,1,1,3,5,5,1,1,5,3,3,1,3,1,1,1,5,1,1,6,7,1,1,1,1,1,1,1,7,6,6,1,8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,9,9,1,1,5,1,1,1,1,1,1,1,1 -stor_stress_hrz_type_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1 -project_specified_fixed_cost_scenario_id,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -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,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,3,,,1,,,1,1,1,1,1,1,1,1,1,1,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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,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,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,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,,,,, -project_new_potential_scenario_id,,,,1,,,1,,,,,2,2,,,,,,,,,,,,,,,,,1,,,,,,,2,2,,,,,2,2,2,2,,,,,,,,,,,,,,,,2,,,,,2,,2,2,,2,2,2,1,2,2,2,,,,,3,,,,,,,1,,,,2,,,,,,,,,,,2,2,2,2,2,,2,2,2,,,,,,2,2,,2,,,,,,,,,,,,,,,1,1,1,1,,,,,,,1,,,,,,,2,,,,,1,1,1,,,,,,,,,,, -project_new_binary_build_size_scenario_id,,,,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -project_capacity_group_requirement_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -project_capacity_group_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -project_relative_capacity_requirement_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -project_power_output_group_requirement_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,, -project_power_output_group_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,, -transmission_portfolio_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,2,,,,,,,,1,1,,,,,3,3,3,3,,,,,,,,,,,,,,,,,2,1,1,,1,,,,,,1,3,,1,1,,,,,4,,,,,,,,,,1,2,3,,2,,1,1,1,2,,,,,1,,,1,,,,3,,,,,,1,1,,3,,,,,,,,,,,,,,,,,,,,5,,,,,,,,,,,,,,,,,2,,,,,,1,1,1,,,,, -transmission_load_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,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,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,,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,1,,,,,1,,,,,,,,,,1,1,1,,1,,1,1,1,1,,,,,1,,,1,,,,1,,,,,,1,1,,1,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,1,,,,,,1,1,1,,,,, -transmission_availability_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,1,,1,,,,,,,,,1,,,,,,1,,1,,,,,,,,,,,,,,,,,,1,2,3,,1,,,,,,1,1,,1,1,,,,,1,,,,,,,,,,1,1,1,,1,,1,1,1,1,,,,,1,,,1,,,,1,,,,,,1,1,,1,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -transmission_operational_chars_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,1,3,3,1,,,,,,,,1,1,,,,,1,1,1,2,,,,,,,,,,,,,,,,,1,1,1,,1,,,,,,1,1,,1,1,,,,,1,,,,,,,,,,1,1,4,,1,,1,1,1,1,,,,,1,,,1,,,,4,,,,,,1,1,,1,,,,,,,,,,,,,,,,,,,,5,,,,,,,,,,,,,,,,,1,,,,,,3,6,3,,,,, -transmission_hurdle_rate_by_timepoint_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -transmission_hurdle_rate_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -transmission_new_cost_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,1,,,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,, -transmission_new_potential_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -transmission_flow_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -transmission_capacity_group_requirement_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -transmission_capacity_group_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -transmission_carbon_cap_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,1,2,3,1,,,,,,,,,,,,,,,,,,,,,1,,,,,,,1,,1,1,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -transmission_simultaneous_flow_limit_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -transmission_simultaneous_flow_limit_line_group_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -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,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,1,1,1,1,1,1,1,1,1,1,1,,,1,1,,1,1,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_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,1,1,3,3,3,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,3,3,3,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,,3,3,3,,,,,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,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,1,1,1,1,1,1,1,1,1,1,1,5,1,1,1,1,1,1,1,1,1,1,1,5,1,1,5,1,1,1,5,,,1,1,,5,5,1,5,,,,,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_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,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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,,1,1,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,1,1,3,3,3,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,3,3,3,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,,3,3,3,,,,,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,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,1,1,1,1,1,1,1,1,1,1,1,5,1,1,1,1,1,1,1,1,1,1,1,5,1,1,5,1,1,1,5,,,1,1,,5,5,1,5,,,,,1,1,1,,,,,,,1,,,,,1,,,,1,,,1,1,1,1,1,1,1,1,1,1,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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,,1,1,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,1,1,3,3,3,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,3,3,3,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,,3,3,3,,,,,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,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,1,1,1,1,1,1,1,1,1,1,1,5,1,1,1,1,1,1,1,1,1,1,1,5,1,1,5,1,1,1,5,,,1,1,,5,5,1,5,,,,,1,1,1,,,,,,,1,,,,,1,,,,1,,,1,1,1,1,1,1,1,1,1,1,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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,,1,1,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,1,1,3,3,3,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,3,3,3,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,,3,3,3,,,,,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,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,1,1,1,1,1,1,1,1,1,1,1,5,1,1,1,1,1,1,1,1,1,1,1,5,1,1,5,1,1,1,5,,,1,1,,5,5,1,5,,,,,1,1,1,,,,,,,1,,,,,1,,,,1,,,1,1,1,1,1,1,1,1,1,1,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,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,2,,,2,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,, -spinning_reserves_ba_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,2,,,2,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,, -project_spinning_reserves_ba_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,2,,,2,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,, -inertia_reserves_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,, -inertia_reserves_ba_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,, -project_inertia_reserves_ba_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,, -period_energy_target_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,,,,,,,,,,,,,,,,,2,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,, -horizon_energy_target_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -energy_target_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,,,,,,,,,,,,,,,,,1,,,,,,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,, -project_energy_target_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,2,,,,,,,,,,,,,,,,,1,,,,,,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,, -transmission_energy_target_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,, -instantaneous_penetration_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -project_instantaneous_penetration_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -instantaneous_penetration_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -transmission_target_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -transmission_target_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -tx_line_transmission_target_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -carbon_cap_target_scenario_id,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,1,1,1,1,,,,,,,,,,,,,,,,,,,,,1,,,,,,,1,,2,2,1,,,,,,,,,,,,,,,,1,,,,,,,,,,,1,,,1,1,,1,1,1,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -carbon_cap_zone_scenario_id,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,1,1,1,1,,,,,,,,,,,,,,,,,,,,,1,,,,,,,1,,1,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,1,1,,,,,,,,,,,,,,,,1,,,,,,,,,,,1,,,1,1,,1,1,1,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -carbon_tax_scenario_id,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,, -carbon_tax_zone_scenario_id,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,, -project_carbon_tax_zone_scenario_id,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,, -project_carbon_tax_allowance_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -performance_standard_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,1,,,,,,,,,,2,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -performance_standard_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,1,,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -project_performance_standard_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,1,,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -carbon_credits_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,, -carbon_cap_zones_carbon_credits_zones_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,1,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -performance_standard_zones_carbon_credits_zones_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -carbon_tax_zones_carbon_credits_zones_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,, -project_carbon_credits_generation_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,, -project_carbon_credits_purchase_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,, -project_carbon_credits_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,, -project_carbon_credits_purchase_limits_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,, -carbon_credits_params_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,2,1,,3,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,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,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -fuel_fuel_burn_limit_ba_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -subsidy_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,,,,,2,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -prm_requirement_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,1,1,,,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -prm_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,1,2,,,2,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -prm_capacity_transfer_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -prm_capacity_transfer_params_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,2,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -project_prm_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,1,2,,,2,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -transmission_prm_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -prm_deliverability_cost_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -prm_deliverability_existing_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -prm_deliverability_potential_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -project_prm_deliverability_multipliers_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -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,,,,,,,,,,,,,,,,3,,,,,,,,,,,3,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,3,,3,3,1,,,,,,,,,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,3,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,, -market_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,, -load_zone_market_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,, -market_price_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,, -market_volume_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,, -market_volume_total_in_tmp_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,, -market_volume_total_in_prd_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,, -water_network_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,2,,,,,,,,,,,,,,,,,,2,2,,1,,,,,,,,,,,,,,,,,,,,,,1,1,1,1, -water_system_params_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,,,,,,,,,,,,,,,,,,1,1,,1,,,,,,,,,,,,,,,,,,,,,,1,1,1,1, -water_node_reservoir_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,2,2,,,,,,,,,,,,,,,,,,2,2,,2,,,,,,,,,,,,,,,,,,,,,,2,3,2,2, -water_flow_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,,,,,,,,,,,,,,,,,,2,3,,1,,,,,,,,,,,,,,,,,,,,,,4,5,1,1, -water_inflow_tmp_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,,,,,,,,,,,,,,,,,,1,1,,1,,,,,,,,,,,,,,,,,,,,,,1,1,2,, -water_inflow_bt_hrz_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,2, -water_powerhouse_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,,,,,,,,,,,,,,,,,,1,1,,1,,,,,,,,,,,,,,,,,,,,,,1,1,1,1, -policy_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,1,,,,,,,,,,,2,3,,,,1,,,,,,, -policy_requirement_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,1,,,,,,,,,,,3,4,,,,5,,,,,,, -project_policy_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,2,,,,,,,,,,,3,4,,,,1,,,,,,, -transmission_policy_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,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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,,1,1,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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,,1,1,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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,,1,1,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,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,1,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,, +of_inertia_reserves,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,, +of_period_energy_target,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,,,,,,,,,,,,,,,,,1,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,, +of_horizon_energy_target,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +of_instantaneous_penetration,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +of_transmission_target,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +of_carbon_cap,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,1,1,1,1,,,,,,,,,,,,,,,,,,,,,1,,,,,,,1,,1,1,1,,,,,,,,,,,,,,,,1,,,,,,,,,,,1,,,1,1,,1,1,1,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +of_track_carbon_imports,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,1,1,1,1,,,,,,,,,,,,,,,,,,,,,1,,,,,,,1,,1,1,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +of_carbon_tax,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,, +of_performance_standard,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,1,,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +of_carbon_credits,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,, +of_fuel_burn_limit,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +of_subsidies,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +of_policy,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,1,,,,,,,,,,,1,1,,,,1,,,,,,,, +of_prm,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,1,1,,,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +of_local_capacity,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +of_capacity_transfers,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +of_elcc_surface,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +of_deliverability,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +of_markets,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,, +of_water,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,,,,,,,,,,,,,,,,,,1,1,,1,,,,,,,,,,,,,,,,,,,,,,1,1,1,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,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,6,6,6,6,1,1,8,11,12,6,6,15,1,6,1,6,6,6,14,13,1,1,1,1,1,3,1,16,3,3,15,17,18,6,6,19,1,1,6,1,20,20,20,19,6,6,1,1,1,1,1,1,1,6,1,1,1,1,6,21,20,20,1,20,20,1,6,1,1,3,1,1,1,22,23,4,24,25,25,3,1,18,6,6,6,20,20,20,20,2,20 +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,2,2,2,2,2,2,1,1,1,1,1,1,1,2,2,1,1,1,1,3,3,3,3,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,3,1,2,2,1,1,1,1,2,1,1,1,1,1,1,1,1,1,2,2,3,1,2,1,2,2,2,2,1,1,1,1,2,1,1,2,1,1,1,3,1,1,1,1,1,2,2,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,2,2,1,1,1,1,1,1 +load_balance_scenario_id,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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,4,1,1,4,1,1,1,1,1,1,1,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,1,1,1,1,1,1,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,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,2,2,2,2,1,1,1,1,1,2,2,1,1,2,1,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,6,6,1,1,6,1,1,3,1,7,7,7,6,1,1,1,1,1,1,1,1,1,5,1,1,1,1,3,8,7,7,1,7,9,1,3,1,1,1,1,1,1,1,1,1,10,14,14,1,1,6,2,2,2,7,7,7,7,15,7 +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,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,10,10,10,10,2,2,3,4,6,10,10,16,22,10,4,12,12,12,10,6,2,1,4,15,4,4,15,1,4,4,16,23,23,1,1,23,15,15,13,16,24,24,24,23,1,1,25,26,3,27,27,28,28,11,28,29,30,30,13,31,24,24,1,24,32,3,33,1,1,6,34,4,1,1,1,1,12,35,35,36,1,23,37,12,37,24,24,24,24,38,24 +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,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,1,1,1,1,22,23,7,1,1,1,1,1,1,1,1,1,1,1,1,1,24,25,1,16,1,1,16,7,1,1,1,26,26,27,28,26,16,16,1,1,1,1,1,29,30,31,32,33,1,1,34,1,35,1,1,36,37,37,1,38,1,1,1,40,39,41,1,1,1,42,43,1,1,44,45,46,1,47,47,1,1,26,1,1,1,1,1,1,1,1,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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,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,4,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,5,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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,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,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,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,2,,,,,,1,1,,,1,,,,,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,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,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,3,1,1,3,1,1,1,3,5,5,1,1,5,3,3,1,3,1,1,1,5,1,1,6,7,1,1,1,1,1,1,1,7,6,6,1,8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,9,9,1,1,5,1,1,1,1,1,1,1,1,1 +stor_stress_hrz_type_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +project_specified_fixed_cost_scenario_id,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +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,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,3,,,1,,,1,1,1,1,1,1,1,1,1,1,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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,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,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,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,,,,,, +project_new_potential_scenario_id,,,,1,,,1,,,,,2,2,,,,,,,,,,,,,,,,,1,,,,,,,2,2,,,,,2,2,2,2,,,,,,,,,,,,,,,,2,,,,,2,,2,2,,2,2,2,1,2,2,2,,,,,3,,,,,,,1,,,,2,,,,,,,,,,,2,2,2,2,2,,2,2,2,,,,,,2,2,,2,,,,,,,,,,,,,,,1,1,1,1,,,,,,,1,,,,,,,2,,,,,1,1,1,,,,,,,,,,,, +project_new_binary_build_size_scenario_id,,,,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +project_capacity_group_requirement_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +project_capacity_group_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +project_relative_capacity_requirement_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +project_power_output_group_requirement_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,, +project_power_output_group_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,, +transmission_portfolio_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,2,,,,,,,,1,1,,,,,3,3,3,3,,,,,,,,,,,,,,,,,2,1,1,,1,,,,,,1,3,,1,1,,,,,4,,,,,,,,,,1,2,3,,2,,1,1,1,2,,,,,1,,,1,,,,3,,,,,,1,1,,3,,,,,,,,,,,,,,,,,,,,5,,,,,,,,,,,,,,,,,2,,,,,,1,1,1,,,,,, +transmission_load_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,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,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,,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,1,,,,,1,,,,,,,,,,1,1,1,,1,,1,1,1,1,,,,,1,,,1,,,,1,,,,,,1,1,,1,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,1,,,,,,1,1,1,,,,,, +transmission_availability_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,1,,1,,,,,,,,,1,,,,,,1,,1,,,,,,,,,,,,,,,,,,1,2,3,,1,,,,,,1,1,,1,1,,,,,1,,,,,,,,,,1,1,1,,1,,1,1,1,1,,,,,1,,,1,,,,1,,,,,,1,1,,1,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +transmission_operational_chars_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,1,3,3,1,,,,,,,,1,1,,,,,1,1,1,2,,,,,,,,,,,,,,,,,1,1,1,,1,,,,,,1,1,,1,1,,,,,1,,,,,,,,,,1,1,4,,1,,1,1,1,1,,,,,1,,,1,,,,4,,,,,,1,1,,1,,,,,,,,,,,,,,,,,,,,5,,,,,,,,,,,,,,,,,1,,,,,,3,6,3,,,,,, +transmission_hurdle_rate_by_timepoint_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +transmission_hurdle_rate_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +transmission_new_cost_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,1,,,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,, +transmission_new_potential_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +transmission_flow_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +transmission_capacity_group_requirement_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +transmission_capacity_group_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +transmission_carbon_cap_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,1,2,3,1,,,,,,,,,,,,,,,,,,,,,1,,,,,,,1,,1,1,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +transmission_simultaneous_flow_limit_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +transmission_simultaneous_flow_limit_line_group_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +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,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,1,1,1,1,1,1,1,1,1,1,1,,,1,1,,1,1,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_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,1,1,3,3,3,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,3,3,3,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,,3,3,3,,,,,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,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,1,1,1,1,1,1,1,1,1,1,1,5,1,1,1,1,1,1,1,1,1,1,1,5,1,1,5,1,1,1,5,,,1,1,,5,5,1,5,,,,,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_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,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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,,1,1,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,1,1,3,3,3,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,3,3,3,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,,3,3,3,,,,,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,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,1,1,1,1,1,1,1,1,1,1,1,5,1,1,1,1,1,1,1,1,1,1,1,5,1,1,5,1,1,1,5,,,1,1,,5,5,1,5,,,,,1,1,1,,,,,,,1,,,,,1,,,,1,,,1,1,1,1,1,1,1,1,1,1,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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,,1,1,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,1,1,3,3,3,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,3,3,3,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,,3,3,3,,,,,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,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,1,1,1,1,1,1,1,1,1,1,1,5,1,1,1,1,1,1,1,1,1,1,1,5,1,1,5,1,1,1,5,,,1,1,,5,5,1,5,,,,,1,1,1,,,,,,,1,,,,,1,,,,1,,,1,1,1,1,1,1,1,1,1,1,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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,,1,1,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,1,1,3,3,3,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,3,3,3,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,,3,3,3,,,,,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,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,1,1,1,1,1,1,1,1,1,1,1,5,1,1,1,1,1,1,1,1,1,1,1,5,1,1,5,1,1,1,5,,,1,1,,5,5,1,5,,,,,1,1,1,,,,,,,1,,,,,1,,,,1,,,1,1,1,1,1,1,1,1,1,1,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,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,2,,,2,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,, +spinning_reserves_ba_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,2,,,2,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,, +project_spinning_reserves_ba_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,2,,,2,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,, +inertia_reserves_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,, +inertia_reserves_ba_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,, +project_inertia_reserves_ba_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,, +period_energy_target_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,,,,,,,,,,,,,,,,,2,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,, +horizon_energy_target_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +energy_target_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,,,,,,,,,,,,,,,,,1,,,,,,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,, +project_energy_target_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,2,,,,,,,,,,,,,,,,,1,,,,,,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,, +transmission_energy_target_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,, +instantaneous_penetration_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +project_instantaneous_penetration_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +instantaneous_penetration_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +transmission_target_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +transmission_target_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +tx_line_transmission_target_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +carbon_cap_target_scenario_id,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,1,1,1,1,,,,,,,,,,,,,,,,,,,,,1,,,,,,,1,,2,2,1,,,,,,,,,,,,,,,,1,,,,,,,,,,,1,,,1,1,,1,1,1,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +carbon_cap_zone_scenario_id,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,1,1,1,1,,,,,,,,,,,,,,,,,,,,,1,,,,,,,1,,1,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,1,1,,,,,,,,,,,,,,,,1,,,,,,,,,,,1,,,1,1,,1,1,1,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +carbon_tax_scenario_id,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,, +carbon_tax_zone_scenario_id,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,, +project_carbon_tax_zone_scenario_id,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,, +project_carbon_tax_allowance_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +performance_standard_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,1,,,,,,,,,,2,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +performance_standard_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,1,,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +project_performance_standard_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,1,,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +carbon_credits_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,, +carbon_cap_zones_carbon_credits_zones_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,1,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +performance_standard_zones_carbon_credits_zones_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +carbon_tax_zones_carbon_credits_zones_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,, +project_carbon_credits_generation_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,, +project_carbon_credits_purchase_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,, +project_carbon_credits_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,, +project_carbon_credits_purchase_limits_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,, +carbon_credits_params_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,2,1,,3,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,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,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +fuel_fuel_burn_limit_ba_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +subsidy_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,,,,,2,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +prm_requirement_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,1,1,,,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +prm_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,1,2,,,2,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +prm_capacity_transfer_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +prm_capacity_transfer_params_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,2,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +project_prm_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,1,2,,,2,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +transmission_prm_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +prm_deliverability_cost_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +prm_deliverability_existing_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +prm_deliverability_potential_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +project_prm_deliverability_multipliers_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +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,,,,,,,,,,,,,,,,3,,,,,,,,,,,3,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,3,,3,3,1,,,,,,,,,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,3,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,, +market_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,, +load_zone_market_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,, +market_price_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,, +market_volume_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,, +market_volume_total_in_tmp_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,, +market_volume_total_in_prd_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,, +water_network_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,2,,,,,,,,,,,,,,,,,,2,2,,1,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,1 +water_system_params_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,,,,,,,,,,,,,,,,,,1,1,,1,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,1 +water_node_reservoir_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,2,2,,,,,,,,,,,,,,,,,,2,2,,2,,,,,,,,,,,,,,,,,,,,,,2,3,2,2,,2 +water_flow_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,,,,,,,,,,,,,,,,,,2,3,,1,,,,,,,,,,,,,,,,,,,,,,4,5,1,1,,6 +water_inflow_tmp_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,,,,,,,,,,,,,,,,,,1,1,,1,,,,,,,,,,,,,,,,,,,,,,1,1,2,,,1 +water_inflow_bt_hrz_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,2,, +water_powerhouse_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,,,,,,,,,,,,,,,,,,1,1,,1,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,1 +policy_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,1,,,,,,,,,,,2,3,,,,1,,,,,,,, +policy_requirement_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,1,,,,,,,,,,,3,4,,,,5,,,,,,,, +project_policy_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,2,,,,,,,,,,,3,4,,,,1,,,,,,,, +transmission_policy_zone_scenario_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,, diff --git a/db/csvs_test_examples/water/flows/1_base_water_flows.csv b/db/csvs_test_examples/water/flows/1_base_water_flows.csv index edeeeb6388..e011e86ad2 100644 --- a/db/csvs_test_examples/water/flows/1_base_water_flows.csv +++ b/db/csvs_test_examples/water/flows/1_base_water_flows.csv @@ -1,5 +1,5 @@ -water_link,default_min_flow_vol_per_sec,allow_water_link_min_flow_violation,min_flow_violation_penalty_cost,allow_water_link_max_flow_violation,max_flow_violation_penalty_cost,allow_water_link_hrz_min_flow_violation,hrz_min_flow_violation_penalty_cost_per_hour,allow_water_link_hrz_max_flow_violation,hrz_max_flow_violation_penalty_cost_per_hour,water_flow_timepoint_bounds_scenario_id,water_flow_horizon_bounds_scenario_id,water_flow_ramp_limit_scenario_id -Water_Link_12,0,,,,,,,,,1,, -Water_Link_23,0,,,,,,,,,1,, -Water_Link_34,0,,,,,,,,,1,, -Water_Link_45,0,,,,,,,,,1,, +water_link,default_min_flow_vol_per_sec,allow_water_link_min_flow_violation,min_flow_violation_penalty_cost,allow_water_link_max_flow_violation,max_flow_violation_penalty_cost,allow_water_link_hrz_min_flow_violation,hrz_min_flow_violation_penalty_cost_per_hour,allow_water_link_hrz_max_flow_violation,hrz_max_flow_violation_penalty_cost_per_hour,water_flow_timepoint_bounds_scenario_id,water_flow_horizon_bounds_scenario_id,water_flow_upstream_node_map_scenario_id,water_flow_ramp_limit_scenario_id +Water_Link_12,0,,,,,,,,,1,,, +Water_Link_23,0,,,,,,,,,1,,, +Water_Link_34,0,,,,,,,,,1,,, +Water_Link_45,0,,,,,,,,,1,,, diff --git a/db/csvs_test_examples/water/flows/2_add_hrz_bounds.csv b/db/csvs_test_examples/water/flows/2_add_hrz_bounds.csv index 7bd022eecf..a2aa11a9ec 100644 --- a/db/csvs_test_examples/water/flows/2_add_hrz_bounds.csv +++ b/db/csvs_test_examples/water/flows/2_add_hrz_bounds.csv @@ -1,5 +1,5 @@ -water_link,default_min_flow_vol_per_sec,allow_water_link_min_flow_violation,min_flow_violation_penalty_cost,allow_water_link_max_flow_violation,max_flow_violation_penalty_cost,allow_water_link_hrz_min_flow_violation,hrz_min_flow_violation_penalty_cost_per_hour,allow_water_link_hrz_max_flow_violation,hrz_max_flow_violation_penalty_cost_per_hour,water_flow_timepoint_bounds_scenario_id,water_flow_horizon_bounds_scenario_id,water_flow_ramp_limit_scenario_id -Water_Link_12,0,,,,,,,,,1,1, -Water_Link_23,0,,,,,,,,,1,1, -Water_Link_34,0,,,,,,,,,1,1, -Water_Link_45,0,,,,,,,,,1,1, +water_link,default_min_flow_vol_per_sec,allow_water_link_min_flow_violation,min_flow_violation_penalty_cost,allow_water_link_max_flow_violation,max_flow_violation_penalty_cost,allow_water_link_hrz_min_flow_violation,hrz_min_flow_violation_penalty_cost_per_hour,allow_water_link_hrz_max_flow_violation,hrz_max_flow_violation_penalty_cost_per_hour,water_flow_timepoint_bounds_scenario_id,water_flow_horizon_bounds_scenario_id,water_flow_upstream_node_map_scenario_id,water_flow_ramp_limit_scenario_id +Water_Link_12,0,,,,,,,,,1,1,1, +Water_Link_23,0,,,,,,,,,1,1,, +Water_Link_34,0,,,,,,,,,1,1,, +Water_Link_45,0,,,,,,,,,1,1,, diff --git a/db/csvs_test_examples/water/flows/3_add_ramp_limits.csv b/db/csvs_test_examples/water/flows/3_add_ramp_limits.csv index d3633adb51..cb32651bc4 100644 --- a/db/csvs_test_examples/water/flows/3_add_ramp_limits.csv +++ b/db/csvs_test_examples/water/flows/3_add_ramp_limits.csv @@ -1,5 +1,5 @@ -water_link,default_min_flow_vol_per_sec,allow_water_link_min_flow_violation,min_flow_violation_penalty_cost,allow_water_link_max_flow_violation,max_flow_violation_penalty_cost,allow_water_link_hrz_min_flow_violation,hrz_min_flow_violation_penalty_cost_per_hour,allow_water_link_hrz_max_flow_violation,hrz_max_flow_violation_penalty_cost_per_hour,water_flow_timepoint_bounds_scenario_id,water_flow_horizon_bounds_scenario_id,water_flow_ramp_limit_scenario_id -Water_Link_12,0,,,,,,,,,1,1,1 -Water_Link_23,0,,,,,,,,,1,1, -Water_Link_34,0,,,,,,,,,1,1, -Water_Link_45,0,,,,,,,,,1,1, +water_link,default_min_flow_vol_per_sec,allow_water_link_min_flow_violation,min_flow_violation_penalty_cost,allow_water_link_max_flow_violation,max_flow_violation_penalty_cost,allow_water_link_hrz_min_flow_violation,hrz_min_flow_violation_penalty_cost_per_hour,allow_water_link_hrz_max_flow_violation,hrz_max_flow_violation_penalty_cost_per_hour,water_flow_timepoint_bounds_scenario_id,water_flow_horizon_bounds_scenario_id,water_flow_upstream_node_map_scenario_id,water_flow_ramp_limit_scenario_id +Water_Link_12,0,,,,,,,,,1,1,1,1 +Water_Link_23,0,,,,,,,,,1,1,, +Water_Link_34,0,,,,,,,,,1,1,, +Water_Link_45,0,,,,,,,,,1,1,, diff --git a/db/csvs_test_examples/water/flows/4_binding_tmp_max_bounds.csv b/db/csvs_test_examples/water/flows/4_binding_tmp_max_bounds.csv index 868257d27f..1653c914bc 100644 --- a/db/csvs_test_examples/water/flows/4_binding_tmp_max_bounds.csv +++ b/db/csvs_test_examples/water/flows/4_binding_tmp_max_bounds.csv @@ -1,5 +1,5 @@ -water_link,default_min_flow_vol_per_sec,allow_water_link_min_flow_violation,min_flow_violation_penalty_cost,allow_water_link_max_flow_violation,max_flow_violation_penalty_cost,allow_water_link_hrz_min_flow_violation,hrz_min_flow_violation_penalty_cost_per_hour,allow_water_link_hrz_max_flow_violation,hrz_max_flow_violation_penalty_cost_per_hour,water_flow_timepoint_bounds_scenario_id,water_flow_horizon_bounds_scenario_id,water_flow_ramp_limit_scenario_id -Water_Link_12,0,,,,,,,,,2,, -Water_Link_23,0,,,,,,,,,2,, -Water_Link_34,0,,,,,,,,,2,, -Water_Link_45,0,,,,,,,,,1,, +water_link,default_min_flow_vol_per_sec,allow_water_link_min_flow_violation,min_flow_violation_penalty_cost,allow_water_link_max_flow_violation,max_flow_violation_penalty_cost,allow_water_link_hrz_min_flow_violation,hrz_min_flow_violation_penalty_cost_per_hour,allow_water_link_hrz_max_flow_violation,hrz_max_flow_violation_penalty_cost_per_hour,water_flow_timepoint_bounds_scenario_id,water_flow_horizon_bounds_scenario_id,water_flow_upstream_node_map_scenario_id,water_flow_ramp_limit_scenario_id +Water_Link_12,0,,,,,,,,,2,,, +Water_Link_23,0,,,,,,,,,2,,, +Water_Link_34,0,,,,,,,,,2,,, +Water_Link_45,0,,,,,,,,,1,,, diff --git a/db/csvs_test_examples/water/flows/5_hrz_min_flow_req_w_violations.csv b/db/csvs_test_examples/water/flows/5_hrz_min_flow_req_w_violations.csv index 340bacdcaf..bb832ed615 100644 --- a/db/csvs_test_examples/water/flows/5_hrz_min_flow_req_w_violations.csv +++ b/db/csvs_test_examples/water/flows/5_hrz_min_flow_req_w_violations.csv @@ -1,5 +1,5 @@ -water_link,default_min_flow_vol_per_sec,allow_water_link_min_flow_violation,min_flow_violation_penalty_cost,allow_water_link_max_flow_violation,max_flow_violation_penalty_cost,allow_water_link_hrz_min_flow_violation,hrz_min_flow_violation_penalty_cost_per_hour,allow_water_link_hrz_max_flow_violation,hrz_max_flow_violation_penalty_cost_per_hour,water_flow_timepoint_bounds_scenario_id,water_flow_horizon_bounds_scenario_id,water_flow_ramp_limit_scenario_id -Water_Link_12,0,,,,,1,10000,,,1,2, -Water_Link_23,0,,,,,,,,,1,, -Water_Link_34,0,,,,,,,,,1,, -Water_Link_45,0,,,,,,,,,1,, +water_link,default_min_flow_vol_per_sec,allow_water_link_min_flow_violation,min_flow_violation_penalty_cost,allow_water_link_max_flow_violation,max_flow_violation_penalty_cost,allow_water_link_hrz_min_flow_violation,hrz_min_flow_violation_penalty_cost_per_hour,allow_water_link_hrz_max_flow_violation,hrz_max_flow_violation_penalty_cost_per_hour,water_flow_timepoint_bounds_scenario_id,water_flow_horizon_bounds_scenario_id,water_flow_upstream_node_map_scenario_id,water_flow_ramp_limit_scenario_id +Water_Link_12,0,,,,,1,10000,,,1,2,, +Water_Link_23,0,,,,,,,,,1,,, +Water_Link_34,0,,,,,,,,,1,,, +Water_Link_45,0,,,,,,,,,1,,, diff --git a/db/csvs_test_examples/water/flows/6_binding_tmp_max_bounds_w_threshold.csv b/db/csvs_test_examples/water/flows/6_binding_tmp_max_bounds_w_threshold.csv new file mode 100644 index 0000000000..a52e392d6e --- /dev/null +++ b/db/csvs_test_examples/water/flows/6_binding_tmp_max_bounds_w_threshold.csv @@ -0,0 +1,5 @@ +water_link,default_min_flow_vol_per_sec,allow_water_link_min_flow_violation,min_flow_violation_penalty_cost,allow_water_link_max_flow_violation,max_flow_violation_penalty_cost,allow_water_link_hrz_min_flow_violation,hrz_min_flow_violation_penalty_cost_per_hour,allow_water_link_hrz_max_flow_violation,hrz_max_flow_violation_penalty_cost_per_hour,water_flow_timepoint_bounds_scenario_id,water_flow_horizon_bounds_scenario_id,water_flow_upstream_node_map_scenario_id,water_flow_ramp_limit_scenario_id +Water_Link_12,0,,,,,,,,,3,,1, +Water_Link_23,0,,,,,,,,,3,,1, +Water_Link_34,0,,,,,,,,,3,,1, +Water_Link_45,0,,,,,,,,,1,,, diff --git a/db/csvs_test_examples/water/flows/tmp_flow_bounds/Water_Link_12-1-base_flows.csv b/db/csvs_test_examples/water/flows/tmp_flow_bounds/Water_Link_12-1-base_flows.csv index 1cafba3173..a4774b032b 100644 --- a/db/csvs_test_examples/water/flows/tmp_flow_bounds/Water_Link_12-1-base_flows.csv +++ b/db/csvs_test_examples/water/flows/tmp_flow_bounds/Water_Link_12-1-base_flows.csv @@ -1,25 +1,25 @@ -timepoint,min_tmp_flow_vol_per_second,max_tmp_flow_vol_per_second -1,0.002,0.02 -2,0.002,0.02 -3,0.002,0.02 -4,0.002,0.02 -5,0.002,0.02 -6,0.002,0.02 -7,0.002,0.02 -8,0.002,0.02 -9,0.002,0.02 -10,0.002,0.02 -11,0.002,0.02 -12,0.002,0.02 -13,0.002,0.02 -14,0.002,0.02 -15,0.002,0.02 -16,0.002,0.02 -17,0.002,0.02 -18,0.002,0.02 -19,0.002,0.02 -20,0.002,0.02 -21,0.002,0.02 -22,0.002,0.02 -23,0.002,0.02 -24,0.002,0.02 \ No newline at end of file +timepoint,min_tmp_flow_vol_per_second,max_tmp_flow_vol_per_second,threshold_side_stream_vol_per_second +1,0.002,0.02, +2,0.002,0.02, +3,0.002,0.02, +4,0.002,0.02, +5,0.002,0.02, +6,0.002,0.02, +7,0.002,0.02, +8,0.002,0.02, +9,0.002,0.02, +10,0.002,0.02, +11,0.002,0.02, +12,0.002,0.02, +13,0.002,0.02, +14,0.002,0.02, +15,0.002,0.02, +16,0.002,0.02, +17,0.002,0.02, +18,0.002,0.02, +19,0.002,0.02, +20,0.002,0.02, +21,0.002,0.02, +22,0.002,0.02, +23,0.002,0.02, +24,0.002,0.02, \ No newline at end of file diff --git a/db/csvs_test_examples/water/flows/tmp_flow_bounds/Water_Link_12-2-binding_max.csv b/db/csvs_test_examples/water/flows/tmp_flow_bounds/Water_Link_12-2-binding_max.csv index dd8ead6020..8f7dac1e58 100644 --- a/db/csvs_test_examples/water/flows/tmp_flow_bounds/Water_Link_12-2-binding_max.csv +++ b/db/csvs_test_examples/water/flows/tmp_flow_bounds/Water_Link_12-2-binding_max.csv @@ -1,25 +1,25 @@ -timepoint,min_tmp_flow_vol_per_second,max_tmp_flow_vol_per_second -1,0.002,0.02 -2,0.002,0.02 -3,0.002,0.02 -4,0.002,0.02 -5,0.002,0.02 -6,0.002,0.02 -7,0.002,0.02 -8,0.002,0.02 -9,0.002,0.02 -10,0.002,0.02 -11,0.002,0.02 -12,0.002,0.0025 -13,0.002,0.0025 -14,0.002,0.0025 -15,0.002,0.0025 -16,0.002,0.0025 -17,0.002,0.0025 -18,0.002,0.0025 -19,0.002,0.0025 -20,0.002,0.02 -21,0.002,0.02 -22,0.002,0.02 -23,0.002,0.02 -24,0.002,0.02 +timepoint,min_tmp_flow_vol_per_second,max_tmp_flow_vol_per_second,threshold_side_stream_vol_per_second +1,0.002,0.02, +2,0.002,0.02, +3,0.002,0.02, +4,0.002,0.02, +5,0.002,0.02, +6,0.002,0.02, +7,0.002,0.02, +8,0.002,0.02, +9,0.002,0.02, +10,0.002,0.02, +11,0.002,0.02, +12,0.002,0.0025, +13,0.002,0.0025, +14,0.002,0.0025, +15,0.002,0.0025, +16,0.002,0.0025, +17,0.002,0.0025, +18,0.002,0.0025, +19,0.002,0.0025, +20,0.002,0.02, +21,0.002,0.02, +22,0.002,0.02, +23,0.002,0.02, +24,0.002,0.02, diff --git a/db/csvs_test_examples/water/flows/tmp_flow_bounds/Water_Link_12-3-binding_max_w_threshold.csv b/db/csvs_test_examples/water/flows/tmp_flow_bounds/Water_Link_12-3-binding_max_w_threshold.csv new file mode 100644 index 0000000000..c179e8334c --- /dev/null +++ b/db/csvs_test_examples/water/flows/tmp_flow_bounds/Water_Link_12-3-binding_max_w_threshold.csv @@ -0,0 +1,25 @@ +timepoint,min_tmp_flow_vol_per_second,max_tmp_flow_vol_per_second,threshold_side_stream_vol_per_second +1,0.002,0.02,0.001 +2,0.002,0.02,0.001 +3,0.002,0.02,0.001 +4,0.002,0.02,0.001 +5,0.002,0.02,0.001 +6,0.002,0.02,0.001 +7,0.002,0.02,0.001 +8,0.002,0.02,0.001 +9,0.002,0.02,0.001 +10,0.002,0.02,0.001 +11,0.002,0.02,0.001 +12,0.002,0.0025,0.001 +13,0.002,0.0025,0.001 +14,0.002,0.0025,0.001 +15,0.002,0.0025,0.001 +16,0.002,0.0025,0.001 +17,0.002,0.0025,0.001 +18,0.002,0.0025,0.001 +19,0.002,0.0025,0.001 +20,0.002,0.02,0.001 +21,0.002,0.02,0.001 +22,0.002,0.02,0.001 +23,0.002,0.02,0.001 +24,0.002,0.02,0.001 diff --git a/db/csvs_test_examples/water/flows/tmp_flow_bounds/Water_Link_23-1-base_flows.csv b/db/csvs_test_examples/water/flows/tmp_flow_bounds/Water_Link_23-1-base_flows.csv index 1cafba3173..a4774b032b 100644 --- a/db/csvs_test_examples/water/flows/tmp_flow_bounds/Water_Link_23-1-base_flows.csv +++ b/db/csvs_test_examples/water/flows/tmp_flow_bounds/Water_Link_23-1-base_flows.csv @@ -1,25 +1,25 @@ -timepoint,min_tmp_flow_vol_per_second,max_tmp_flow_vol_per_second -1,0.002,0.02 -2,0.002,0.02 -3,0.002,0.02 -4,0.002,0.02 -5,0.002,0.02 -6,0.002,0.02 -7,0.002,0.02 -8,0.002,0.02 -9,0.002,0.02 -10,0.002,0.02 -11,0.002,0.02 -12,0.002,0.02 -13,0.002,0.02 -14,0.002,0.02 -15,0.002,0.02 -16,0.002,0.02 -17,0.002,0.02 -18,0.002,0.02 -19,0.002,0.02 -20,0.002,0.02 -21,0.002,0.02 -22,0.002,0.02 -23,0.002,0.02 -24,0.002,0.02 \ No newline at end of file +timepoint,min_tmp_flow_vol_per_second,max_tmp_flow_vol_per_second,threshold_side_stream_vol_per_second +1,0.002,0.02, +2,0.002,0.02, +3,0.002,0.02, +4,0.002,0.02, +5,0.002,0.02, +6,0.002,0.02, +7,0.002,0.02, +8,0.002,0.02, +9,0.002,0.02, +10,0.002,0.02, +11,0.002,0.02, +12,0.002,0.02, +13,0.002,0.02, +14,0.002,0.02, +15,0.002,0.02, +16,0.002,0.02, +17,0.002,0.02, +18,0.002,0.02, +19,0.002,0.02, +20,0.002,0.02, +21,0.002,0.02, +22,0.002,0.02, +23,0.002,0.02, +24,0.002,0.02, \ No newline at end of file diff --git a/db/csvs_test_examples/water/flows/tmp_flow_bounds/Water_Link_23-2-binding_max.csv b/db/csvs_test_examples/water/flows/tmp_flow_bounds/Water_Link_23-2-binding_max.csv index dd8ead6020..8f7dac1e58 100644 --- a/db/csvs_test_examples/water/flows/tmp_flow_bounds/Water_Link_23-2-binding_max.csv +++ b/db/csvs_test_examples/water/flows/tmp_flow_bounds/Water_Link_23-2-binding_max.csv @@ -1,25 +1,25 @@ -timepoint,min_tmp_flow_vol_per_second,max_tmp_flow_vol_per_second -1,0.002,0.02 -2,0.002,0.02 -3,0.002,0.02 -4,0.002,0.02 -5,0.002,0.02 -6,0.002,0.02 -7,0.002,0.02 -8,0.002,0.02 -9,0.002,0.02 -10,0.002,0.02 -11,0.002,0.02 -12,0.002,0.0025 -13,0.002,0.0025 -14,0.002,0.0025 -15,0.002,0.0025 -16,0.002,0.0025 -17,0.002,0.0025 -18,0.002,0.0025 -19,0.002,0.0025 -20,0.002,0.02 -21,0.002,0.02 -22,0.002,0.02 -23,0.002,0.02 -24,0.002,0.02 +timepoint,min_tmp_flow_vol_per_second,max_tmp_flow_vol_per_second,threshold_side_stream_vol_per_second +1,0.002,0.02, +2,0.002,0.02, +3,0.002,0.02, +4,0.002,0.02, +5,0.002,0.02, +6,0.002,0.02, +7,0.002,0.02, +8,0.002,0.02, +9,0.002,0.02, +10,0.002,0.02, +11,0.002,0.02, +12,0.002,0.0025, +13,0.002,0.0025, +14,0.002,0.0025, +15,0.002,0.0025, +16,0.002,0.0025, +17,0.002,0.0025, +18,0.002,0.0025, +19,0.002,0.0025, +20,0.002,0.02, +21,0.002,0.02, +22,0.002,0.02, +23,0.002,0.02, +24,0.002,0.02, diff --git a/db/csvs_test_examples/water/flows/tmp_flow_bounds/Water_Link_23-3-binding_max_w_threshold.csv b/db/csvs_test_examples/water/flows/tmp_flow_bounds/Water_Link_23-3-binding_max_w_threshold.csv new file mode 100644 index 0000000000..c179e8334c --- /dev/null +++ b/db/csvs_test_examples/water/flows/tmp_flow_bounds/Water_Link_23-3-binding_max_w_threshold.csv @@ -0,0 +1,25 @@ +timepoint,min_tmp_flow_vol_per_second,max_tmp_flow_vol_per_second,threshold_side_stream_vol_per_second +1,0.002,0.02,0.001 +2,0.002,0.02,0.001 +3,0.002,0.02,0.001 +4,0.002,0.02,0.001 +5,0.002,0.02,0.001 +6,0.002,0.02,0.001 +7,0.002,0.02,0.001 +8,0.002,0.02,0.001 +9,0.002,0.02,0.001 +10,0.002,0.02,0.001 +11,0.002,0.02,0.001 +12,0.002,0.0025,0.001 +13,0.002,0.0025,0.001 +14,0.002,0.0025,0.001 +15,0.002,0.0025,0.001 +16,0.002,0.0025,0.001 +17,0.002,0.0025,0.001 +18,0.002,0.0025,0.001 +19,0.002,0.0025,0.001 +20,0.002,0.02,0.001 +21,0.002,0.02,0.001 +22,0.002,0.02,0.001 +23,0.002,0.02,0.001 +24,0.002,0.02,0.001 diff --git a/db/csvs_test_examples/water/flows/tmp_flow_bounds/Water_Link_34-1-base_flows.csv b/db/csvs_test_examples/water/flows/tmp_flow_bounds/Water_Link_34-1-base_flows.csv index 1cafba3173..a4774b032b 100644 --- a/db/csvs_test_examples/water/flows/tmp_flow_bounds/Water_Link_34-1-base_flows.csv +++ b/db/csvs_test_examples/water/flows/tmp_flow_bounds/Water_Link_34-1-base_flows.csv @@ -1,25 +1,25 @@ -timepoint,min_tmp_flow_vol_per_second,max_tmp_flow_vol_per_second -1,0.002,0.02 -2,0.002,0.02 -3,0.002,0.02 -4,0.002,0.02 -5,0.002,0.02 -6,0.002,0.02 -7,0.002,0.02 -8,0.002,0.02 -9,0.002,0.02 -10,0.002,0.02 -11,0.002,0.02 -12,0.002,0.02 -13,0.002,0.02 -14,0.002,0.02 -15,0.002,0.02 -16,0.002,0.02 -17,0.002,0.02 -18,0.002,0.02 -19,0.002,0.02 -20,0.002,0.02 -21,0.002,0.02 -22,0.002,0.02 -23,0.002,0.02 -24,0.002,0.02 \ No newline at end of file +timepoint,min_tmp_flow_vol_per_second,max_tmp_flow_vol_per_second,threshold_side_stream_vol_per_second +1,0.002,0.02, +2,0.002,0.02, +3,0.002,0.02, +4,0.002,0.02, +5,0.002,0.02, +6,0.002,0.02, +7,0.002,0.02, +8,0.002,0.02, +9,0.002,0.02, +10,0.002,0.02, +11,0.002,0.02, +12,0.002,0.02, +13,0.002,0.02, +14,0.002,0.02, +15,0.002,0.02, +16,0.002,0.02, +17,0.002,0.02, +18,0.002,0.02, +19,0.002,0.02, +20,0.002,0.02, +21,0.002,0.02, +22,0.002,0.02, +23,0.002,0.02, +24,0.002,0.02, \ No newline at end of file diff --git a/db/csvs_test_examples/water/flows/tmp_flow_bounds/Water_Link_34-2-binding_max.csv b/db/csvs_test_examples/water/flows/tmp_flow_bounds/Water_Link_34-2-binding_max.csv index dd8ead6020..8f7dac1e58 100644 --- a/db/csvs_test_examples/water/flows/tmp_flow_bounds/Water_Link_34-2-binding_max.csv +++ b/db/csvs_test_examples/water/flows/tmp_flow_bounds/Water_Link_34-2-binding_max.csv @@ -1,25 +1,25 @@ -timepoint,min_tmp_flow_vol_per_second,max_tmp_flow_vol_per_second -1,0.002,0.02 -2,0.002,0.02 -3,0.002,0.02 -4,0.002,0.02 -5,0.002,0.02 -6,0.002,0.02 -7,0.002,0.02 -8,0.002,0.02 -9,0.002,0.02 -10,0.002,0.02 -11,0.002,0.02 -12,0.002,0.0025 -13,0.002,0.0025 -14,0.002,0.0025 -15,0.002,0.0025 -16,0.002,0.0025 -17,0.002,0.0025 -18,0.002,0.0025 -19,0.002,0.0025 -20,0.002,0.02 -21,0.002,0.02 -22,0.002,0.02 -23,0.002,0.02 -24,0.002,0.02 +timepoint,min_tmp_flow_vol_per_second,max_tmp_flow_vol_per_second,threshold_side_stream_vol_per_second +1,0.002,0.02, +2,0.002,0.02, +3,0.002,0.02, +4,0.002,0.02, +5,0.002,0.02, +6,0.002,0.02, +7,0.002,0.02, +8,0.002,0.02, +9,0.002,0.02, +10,0.002,0.02, +11,0.002,0.02, +12,0.002,0.0025, +13,0.002,0.0025, +14,0.002,0.0025, +15,0.002,0.0025, +16,0.002,0.0025, +17,0.002,0.0025, +18,0.002,0.0025, +19,0.002,0.0025, +20,0.002,0.02, +21,0.002,0.02, +22,0.002,0.02, +23,0.002,0.02, +24,0.002,0.02, diff --git a/db/csvs_test_examples/water/flows/tmp_flow_bounds/Water_Link_34-3-binding_max_w_threshold.csv b/db/csvs_test_examples/water/flows/tmp_flow_bounds/Water_Link_34-3-binding_max_w_threshold.csv new file mode 100644 index 0000000000..c179e8334c --- /dev/null +++ b/db/csvs_test_examples/water/flows/tmp_flow_bounds/Water_Link_34-3-binding_max_w_threshold.csv @@ -0,0 +1,25 @@ +timepoint,min_tmp_flow_vol_per_second,max_tmp_flow_vol_per_second,threshold_side_stream_vol_per_second +1,0.002,0.02,0.001 +2,0.002,0.02,0.001 +3,0.002,0.02,0.001 +4,0.002,0.02,0.001 +5,0.002,0.02,0.001 +6,0.002,0.02,0.001 +7,0.002,0.02,0.001 +8,0.002,0.02,0.001 +9,0.002,0.02,0.001 +10,0.002,0.02,0.001 +11,0.002,0.02,0.001 +12,0.002,0.0025,0.001 +13,0.002,0.0025,0.001 +14,0.002,0.0025,0.001 +15,0.002,0.0025,0.001 +16,0.002,0.0025,0.001 +17,0.002,0.0025,0.001 +18,0.002,0.0025,0.001 +19,0.002,0.0025,0.001 +20,0.002,0.02,0.001 +21,0.002,0.02,0.001 +22,0.002,0.02,0.001 +23,0.002,0.02,0.001 +24,0.002,0.02,0.001 diff --git a/db/csvs_test_examples/water/flows/tmp_flow_bounds/Water_Link_45-1-base_flows.csv b/db/csvs_test_examples/water/flows/tmp_flow_bounds/Water_Link_45-1-base_flows.csv index 1cafba3173..a4774b032b 100644 --- a/db/csvs_test_examples/water/flows/tmp_flow_bounds/Water_Link_45-1-base_flows.csv +++ b/db/csvs_test_examples/water/flows/tmp_flow_bounds/Water_Link_45-1-base_flows.csv @@ -1,25 +1,25 @@ -timepoint,min_tmp_flow_vol_per_second,max_tmp_flow_vol_per_second -1,0.002,0.02 -2,0.002,0.02 -3,0.002,0.02 -4,0.002,0.02 -5,0.002,0.02 -6,0.002,0.02 -7,0.002,0.02 -8,0.002,0.02 -9,0.002,0.02 -10,0.002,0.02 -11,0.002,0.02 -12,0.002,0.02 -13,0.002,0.02 -14,0.002,0.02 -15,0.002,0.02 -16,0.002,0.02 -17,0.002,0.02 -18,0.002,0.02 -19,0.002,0.02 -20,0.002,0.02 -21,0.002,0.02 -22,0.002,0.02 -23,0.002,0.02 -24,0.002,0.02 \ No newline at end of file +timepoint,min_tmp_flow_vol_per_second,max_tmp_flow_vol_per_second,threshold_side_stream_vol_per_second +1,0.002,0.02, +2,0.002,0.02, +3,0.002,0.02, +4,0.002,0.02, +5,0.002,0.02, +6,0.002,0.02, +7,0.002,0.02, +8,0.002,0.02, +9,0.002,0.02, +10,0.002,0.02, +11,0.002,0.02, +12,0.002,0.02, +13,0.002,0.02, +14,0.002,0.02, +15,0.002,0.02, +16,0.002,0.02, +17,0.002,0.02, +18,0.002,0.02, +19,0.002,0.02, +20,0.002,0.02, +21,0.002,0.02, +22,0.002,0.02, +23,0.002,0.02, +24,0.002,0.02, \ No newline at end of file diff --git a/db/csvs_test_examples/water/flows/hrz_flow_bounds/upstream_node_map/Water_Link_12-1-base_flows.csv b/db/csvs_test_examples/water/flows/upstream_node_map/Water_Link_12-1-base_flows.csv similarity index 97% rename from db/csvs_test_examples/water/flows/hrz_flow_bounds/upstream_node_map/Water_Link_12-1-base_flows.csv rename to db/csvs_test_examples/water/flows/upstream_node_map/Water_Link_12-1-base_flows.csv index 8aeb4143af..0cc1ece068 100644 --- a/db/csvs_test_examples/water/flows/hrz_flow_bounds/upstream_node_map/Water_Link_12-1-base_flows.csv +++ b/db/csvs_test_examples/water/flows/upstream_node_map/Water_Link_12-1-base_flows.csv @@ -1,2 +1,2 @@ -upstream_water_node +upstream_water_node Water_Node_1 \ No newline at end of file diff --git a/db/csvs_test_examples/water/flows/upstream_node_map/Water_Link_23-1-base_flows.csv b/db/csvs_test_examples/water/flows/upstream_node_map/Water_Link_23-1-base_flows.csv new file mode 100644 index 0000000000..3e8c2c88d9 --- /dev/null +++ b/db/csvs_test_examples/water/flows/upstream_node_map/Water_Link_23-1-base_flows.csv @@ -0,0 +1,2 @@ +upstream_water_node +Water_Node_2 \ No newline at end of file diff --git a/db/csvs_test_examples/water/flows/upstream_node_map/Water_Link_34-1-base_flows.csv b/db/csvs_test_examples/water/flows/upstream_node_map/Water_Link_34-1-base_flows.csv new file mode 100644 index 0000000000..ce366b5c8e --- /dev/null +++ b/db/csvs_test_examples/water/flows/upstream_node_map/Water_Link_34-1-base_flows.csv @@ -0,0 +1,2 @@ +upstream_water_node +Water_Node_3 \ No newline at end of file diff --git a/db/db_schema.sql b/db/db_schema.sql index 37a8c12203..1846b2d894 100644 --- a/db/db_schema.sql +++ b/db/db_schema.sql @@ -1503,6 +1503,7 @@ CREATE TABLE inputs_system_water_flows hrz_max_flow_violation_penalty_cost_per_hour FLOAT, water_flow_timepoint_bounds_scenario_id INTEGER, water_flow_horizon_bounds_scenario_id INTEGER, + water_flow_upstream_node_map_scenario_id INTEGER, water_flow_ramp_limit_scenario_id INTEGER, PRIMARY KEY (water_flow_scenario_id, water_link), FOREIGN KEY (water_flow_scenario_id) REFERENCES @@ -1528,6 +1529,7 @@ CREATE TABLE inputs_system_water_flows_timepoint_bounds timepoint FLOAT, min_tmp_flow_vol_per_second FLOAT, max_tmp_flow_vol_per_second FLOAT, + threshold_side_stream_vol_per_second FLOAT, PRIMARY KEY (water_link, water_flow_timepoint_bounds_scenario_id, timepoint), FOREIGN KEY (water_link, water_flow_timepoint_bounds_scenario_id) REFERENCES @@ -1563,27 +1565,29 @@ CREATE TABLE inputs_system_water_flows_horizon_bounds (water_link, water_flow_horizon_bounds_scenario_id) ); -DROP TABLE IF EXISTS subscenarios_system_water_flows_horizon_bounds_upstream_node_map; -CREATE TABLE subscenarios_system_water_flows_horizon_bounds_upstream_node_map +-- Water nodes upstream of a water link whose exogenous inflows count +-- toward the side stream thresholds (both by-timepoint and by-horizon) +DROP TABLE IF EXISTS subscenarios_system_water_flows_upstream_node_map; +CREATE TABLE subscenarios_system_water_flows_upstream_node_map ( - water_link TEXT, - water_flow_horizon_bounds_scenario_id INTEGER, - name VARCHAR(32), - description VARCHAR(128), - PRIMARY KEY (water_link, water_flow_horizon_bounds_scenario_id) + water_link TEXT, + water_flow_upstream_node_map_scenario_id INTEGER, + name VARCHAR(32), + description VARCHAR(128), + PRIMARY KEY (water_link, water_flow_upstream_node_map_scenario_id) ); -DROP TABLE IF EXISTS inputs_system_water_flows_horizon_bounds_upstream_node_map; -CREATE TABLE inputs_system_water_flows_horizon_bounds_upstream_node_map +DROP TABLE IF EXISTS inputs_system_water_flows_upstream_node_map; +CREATE TABLE inputs_system_water_flows_upstream_node_map ( - water_link TEXT, - water_flow_horizon_bounds_scenario_id INTEGER, - upstream_water_node TEXT, - PRIMARY KEY (water_link, water_flow_horizon_bounds_scenario_id, + water_link TEXT, + water_flow_upstream_node_map_scenario_id INTEGER, + upstream_water_node TEXT, + PRIMARY KEY (water_link, water_flow_upstream_node_map_scenario_id, upstream_water_node), - FOREIGN KEY (water_link, water_flow_horizon_bounds_scenario_id) REFERENCES - subscenarios_system_water_flows_horizon_bounds - (water_link, water_flow_horizon_bounds_scenario_id) + FOREIGN KEY (water_link, water_flow_upstream_node_map_scenario_id) REFERENCES + subscenarios_system_water_flows_upstream_node_map + (water_link, water_flow_upstream_node_map_scenario_id) ); -- Water flow ramp limits @@ -8145,6 +8149,10 @@ CREATE TABLE results_system_water_link_timepoint water_flow_vol_per_sec FLOAT, water_flow_min_violation_vol_per_sec FLOAT, water_flow_max_violation_vol_per_sec FLOAT, + max_tmp_flow_vol_per_second FLOAT, + threshold_side_stream_vol_per_second FLOAT, + upstream_exogenous_inflow_vol_per_sec FLOAT, + adjusted_max_tmp_flow_vol_per_second FLOAT, water_link_min_flow_constraint_dual FLOAT, water_link_min_flow_constraint_marginal_cost_per_vol_per_sec FLOAT, water_link_max_flow_constraint_dual FLOAT, diff --git a/doc/source/installation.rst b/doc/source/installation.rst index 3480351087..6014f4ee62 100644 --- a/doc/source/installation.rst +++ b/doc/source/installation.rst @@ -111,8 +111,8 @@ To install all packages, run:: pip install -e .[all] -GridPath's developer extras can be installed individually. See the setup.py file in -the repository. +GridPath's developer extras can be installed individually. See the pyproject.toml +file in the repository. If you would like to edit the user-interface code, you will also need Node.js in addition to Python and will be required to install various node packages. diff --git a/examples/hydro_system_exog_elev/hydro_iteration_1/inputs/water_flow_tmp_bounds.tab b/examples/hydro_system_exog_elev/hydro_iteration_1/inputs/water_flow_tmp_bounds.tab index 3918abcda8..3616e4f469 100644 --- a/examples/hydro_system_exog_elev/hydro_iteration_1/inputs/water_flow_tmp_bounds.tab +++ b/examples/hydro_system_exog_elev/hydro_iteration_1/inputs/water_flow_tmp_bounds.tab @@ -1,97 +1,97 @@ -water_link timepoint min_tmp_flow_vol_per_second max_tmp_flow_vol_per_second -Water_Link_12 1.0 0.002 0.02 -Water_Link_12 2.0 0.002 0.02 -Water_Link_12 3.0 0.002 0.02 -Water_Link_12 4.0 0.002 0.02 -Water_Link_12 5.0 0.002 0.02 -Water_Link_12 6.0 0.002 0.02 -Water_Link_12 7.0 0.002 0.02 -Water_Link_12 8.0 0.002 0.02 -Water_Link_12 9.0 0.002 0.02 -Water_Link_12 10.0 0.002 0.02 -Water_Link_12 11.0 0.002 0.02 -Water_Link_12 12.0 0.002 0.02 -Water_Link_12 13.0 0.002 0.02 -Water_Link_12 14.0 0.002 0.02 -Water_Link_12 15.0 0.002 0.02 -Water_Link_12 16.0 0.002 0.02 -Water_Link_12 17.0 0.002 0.02 -Water_Link_12 18.0 0.002 0.02 -Water_Link_12 19.0 0.002 0.02 -Water_Link_12 20.0 0.002 0.02 -Water_Link_12 21.0 0.002 0.02 -Water_Link_12 22.0 0.002 0.02 -Water_Link_12 23.0 0.002 0.02 -Water_Link_12 24.0 0.002 0.02 -Water_Link_23 1.0 0.002 0.02 -Water_Link_23 2.0 0.002 0.02 -Water_Link_23 3.0 0.002 0.02 -Water_Link_23 4.0 0.002 0.02 -Water_Link_23 5.0 0.002 0.02 -Water_Link_23 6.0 0.002 0.02 -Water_Link_23 7.0 0.002 0.02 -Water_Link_23 8.0 0.002 0.02 -Water_Link_23 9.0 0.002 0.02 -Water_Link_23 10.0 0.002 0.02 -Water_Link_23 11.0 0.002 0.02 -Water_Link_23 12.0 0.002 0.02 -Water_Link_23 13.0 0.002 0.02 -Water_Link_23 14.0 0.002 0.02 -Water_Link_23 15.0 0.002 0.02 -Water_Link_23 16.0 0.002 0.02 -Water_Link_23 17.0 0.002 0.02 -Water_Link_23 18.0 0.002 0.02 -Water_Link_23 19.0 0.002 0.02 -Water_Link_23 20.0 0.002 0.02 -Water_Link_23 21.0 0.002 0.02 -Water_Link_23 22.0 0.002 0.02 -Water_Link_23 23.0 0.002 0.02 -Water_Link_23 24.0 0.002 0.02 -Water_Link_34 1.0 0.002 0.02 -Water_Link_34 2.0 0.002 0.02 -Water_Link_34 3.0 0.002 0.02 -Water_Link_34 4.0 0.002 0.02 -Water_Link_34 5.0 0.002 0.02 -Water_Link_34 6.0 0.002 0.02 -Water_Link_34 7.0 0.002 0.02 -Water_Link_34 8.0 0.002 0.02 -Water_Link_34 9.0 0.002 0.02 -Water_Link_34 10.0 0.002 0.02 -Water_Link_34 11.0 0.002 0.02 -Water_Link_34 12.0 0.002 0.02 -Water_Link_34 13.0 0.002 0.02 -Water_Link_34 14.0 0.002 0.02 -Water_Link_34 15.0 0.002 0.02 -Water_Link_34 16.0 0.002 0.02 -Water_Link_34 17.0 0.002 0.02 -Water_Link_34 18.0 0.002 0.02 -Water_Link_34 19.0 0.002 0.02 -Water_Link_34 20.0 0.002 0.02 -Water_Link_34 21.0 0.002 0.02 -Water_Link_34 22.0 0.002 0.02 -Water_Link_34 23.0 0.002 0.02 -Water_Link_34 24.0 0.002 0.02 -Water_Link_45 1.0 0.002 0.02 -Water_Link_45 2.0 0.002 0.02 -Water_Link_45 3.0 0.002 0.02 -Water_Link_45 4.0 0.002 0.02 -Water_Link_45 5.0 0.002 0.02 -Water_Link_45 6.0 0.002 0.02 -Water_Link_45 7.0 0.002 0.02 -Water_Link_45 8.0 0.002 0.02 -Water_Link_45 9.0 0.002 0.02 -Water_Link_45 10.0 0.002 0.02 -Water_Link_45 11.0 0.002 0.02 -Water_Link_45 12.0 0.002 0.02 -Water_Link_45 13.0 0.002 0.02 -Water_Link_45 14.0 0.002 0.02 -Water_Link_45 15.0 0.002 0.02 -Water_Link_45 16.0 0.002 0.02 -Water_Link_45 17.0 0.002 0.02 -Water_Link_45 18.0 0.002 0.02 -Water_Link_45 19.0 0.002 0.02 -Water_Link_45 20.0 0.002 0.02 -Water_Link_45 21.0 0.002 0.02 -Water_Link_45 22.0 0.002 0.02 -Water_Link_45 23.0 0.002 0.02 -Water_Link_45 24.0 0.002 0.02 +water_link timepoint min_tmp_flow_vol_per_second max_tmp_flow_vol_per_second threshold_side_stream_vol_per_second +Water_Link_12 1.0 0.002 0.02 . +Water_Link_12 2.0 0.002 0.02 . +Water_Link_12 3.0 0.002 0.02 . +Water_Link_12 4.0 0.002 0.02 . +Water_Link_12 5.0 0.002 0.02 . +Water_Link_12 6.0 0.002 0.02 . +Water_Link_12 7.0 0.002 0.02 . +Water_Link_12 8.0 0.002 0.02 . +Water_Link_12 9.0 0.002 0.02 . +Water_Link_12 10.0 0.002 0.02 . +Water_Link_12 11.0 0.002 0.02 . +Water_Link_12 12.0 0.002 0.02 . +Water_Link_12 13.0 0.002 0.02 . +Water_Link_12 14.0 0.002 0.02 . +Water_Link_12 15.0 0.002 0.02 . +Water_Link_12 16.0 0.002 0.02 . +Water_Link_12 17.0 0.002 0.02 . +Water_Link_12 18.0 0.002 0.02 . +Water_Link_12 19.0 0.002 0.02 . +Water_Link_12 20.0 0.002 0.02 . +Water_Link_12 21.0 0.002 0.02 . +Water_Link_12 22.0 0.002 0.02 . +Water_Link_12 23.0 0.002 0.02 . +Water_Link_12 24.0 0.002 0.02 . +Water_Link_23 1.0 0.002 0.02 . +Water_Link_23 2.0 0.002 0.02 . +Water_Link_23 3.0 0.002 0.02 . +Water_Link_23 4.0 0.002 0.02 . +Water_Link_23 5.0 0.002 0.02 . +Water_Link_23 6.0 0.002 0.02 . +Water_Link_23 7.0 0.002 0.02 . +Water_Link_23 8.0 0.002 0.02 . +Water_Link_23 9.0 0.002 0.02 . +Water_Link_23 10.0 0.002 0.02 . +Water_Link_23 11.0 0.002 0.02 . +Water_Link_23 12.0 0.002 0.02 . +Water_Link_23 13.0 0.002 0.02 . +Water_Link_23 14.0 0.002 0.02 . +Water_Link_23 15.0 0.002 0.02 . +Water_Link_23 16.0 0.002 0.02 . +Water_Link_23 17.0 0.002 0.02 . +Water_Link_23 18.0 0.002 0.02 . +Water_Link_23 19.0 0.002 0.02 . +Water_Link_23 20.0 0.002 0.02 . +Water_Link_23 21.0 0.002 0.02 . +Water_Link_23 22.0 0.002 0.02 . +Water_Link_23 23.0 0.002 0.02 . +Water_Link_23 24.0 0.002 0.02 . +Water_Link_34 1.0 0.002 0.02 . +Water_Link_34 2.0 0.002 0.02 . +Water_Link_34 3.0 0.002 0.02 . +Water_Link_34 4.0 0.002 0.02 . +Water_Link_34 5.0 0.002 0.02 . +Water_Link_34 6.0 0.002 0.02 . +Water_Link_34 7.0 0.002 0.02 . +Water_Link_34 8.0 0.002 0.02 . +Water_Link_34 9.0 0.002 0.02 . +Water_Link_34 10.0 0.002 0.02 . +Water_Link_34 11.0 0.002 0.02 . +Water_Link_34 12.0 0.002 0.02 . +Water_Link_34 13.0 0.002 0.02 . +Water_Link_34 14.0 0.002 0.02 . +Water_Link_34 15.0 0.002 0.02 . +Water_Link_34 16.0 0.002 0.02 . +Water_Link_34 17.0 0.002 0.02 . +Water_Link_34 18.0 0.002 0.02 . +Water_Link_34 19.0 0.002 0.02 . +Water_Link_34 20.0 0.002 0.02 . +Water_Link_34 21.0 0.002 0.02 . +Water_Link_34 22.0 0.002 0.02 . +Water_Link_34 23.0 0.002 0.02 . +Water_Link_34 24.0 0.002 0.02 . +Water_Link_45 1.0 0.002 0.02 . +Water_Link_45 2.0 0.002 0.02 . +Water_Link_45 3.0 0.002 0.02 . +Water_Link_45 4.0 0.002 0.02 . +Water_Link_45 5.0 0.002 0.02 . +Water_Link_45 6.0 0.002 0.02 . +Water_Link_45 7.0 0.002 0.02 . +Water_Link_45 8.0 0.002 0.02 . +Water_Link_45 9.0 0.002 0.02 . +Water_Link_45 10.0 0.002 0.02 . +Water_Link_45 11.0 0.002 0.02 . +Water_Link_45 12.0 0.002 0.02 . +Water_Link_45 13.0 0.002 0.02 . +Water_Link_45 14.0 0.002 0.02 . +Water_Link_45 15.0 0.002 0.02 . +Water_Link_45 16.0 0.002 0.02 . +Water_Link_45 17.0 0.002 0.02 . +Water_Link_45 18.0 0.002 0.02 . +Water_Link_45 19.0 0.002 0.02 . +Water_Link_45 20.0 0.002 0.02 . +Water_Link_45 21.0 0.002 0.02 . +Water_Link_45 22.0 0.002 0.02 . +Water_Link_45 23.0 0.002 0.02 . +Water_Link_45 24.0 0.002 0.02 . diff --git a/examples/hydro_system_exog_elev_w_binding_tmp_flow_max/hydro_iteration_1/inputs/water_flow_tmp_bounds.tab b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max/hydro_iteration_1/inputs/water_flow_tmp_bounds.tab index 26e491f819..64256888e9 100644 --- a/examples/hydro_system_exog_elev_w_binding_tmp_flow_max/hydro_iteration_1/inputs/water_flow_tmp_bounds.tab +++ b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max/hydro_iteration_1/inputs/water_flow_tmp_bounds.tab @@ -1,97 +1,97 @@ -water_link timepoint min_tmp_flow_vol_per_second max_tmp_flow_vol_per_second -Water_Link_12 1.0 0.002 0.02 -Water_Link_12 2.0 0.002 0.02 -Water_Link_12 3.0 0.002 0.02 -Water_Link_12 4.0 0.002 0.02 -Water_Link_12 5.0 0.002 0.02 -Water_Link_12 6.0 0.002 0.02 -Water_Link_12 7.0 0.002 0.02 -Water_Link_12 8.0 0.002 0.02 -Water_Link_12 9.0 0.002 0.02 -Water_Link_12 10.0 0.002 0.02 -Water_Link_12 11.0 0.002 0.02 -Water_Link_12 12.0 0.002 0.0025 -Water_Link_12 13.0 0.002 0.0025 -Water_Link_12 14.0 0.002 0.0025 -Water_Link_12 15.0 0.002 0.0025 -Water_Link_12 16.0 0.002 0.0025 -Water_Link_12 17.0 0.002 0.0025 -Water_Link_12 18.0 0.002 0.0025 -Water_Link_12 19.0 0.002 0.0025 -Water_Link_12 20.0 0.002 0.02 -Water_Link_12 21.0 0.002 0.02 -Water_Link_12 22.0 0.002 0.02 -Water_Link_12 23.0 0.002 0.02 -Water_Link_12 24.0 0.002 0.02 -Water_Link_23 1.0 0.002 0.02 -Water_Link_23 2.0 0.002 0.02 -Water_Link_23 3.0 0.002 0.02 -Water_Link_23 4.0 0.002 0.02 -Water_Link_23 5.0 0.002 0.02 -Water_Link_23 6.0 0.002 0.02 -Water_Link_23 7.0 0.002 0.02 -Water_Link_23 8.0 0.002 0.02 -Water_Link_23 9.0 0.002 0.02 -Water_Link_23 10.0 0.002 0.02 -Water_Link_23 11.0 0.002 0.02 -Water_Link_23 12.0 0.002 0.0025 -Water_Link_23 13.0 0.002 0.0025 -Water_Link_23 14.0 0.002 0.0025 -Water_Link_23 15.0 0.002 0.0025 -Water_Link_23 16.0 0.002 0.0025 -Water_Link_23 17.0 0.002 0.0025 -Water_Link_23 18.0 0.002 0.0025 -Water_Link_23 19.0 0.002 0.0025 -Water_Link_23 20.0 0.002 0.02 -Water_Link_23 21.0 0.002 0.02 -Water_Link_23 22.0 0.002 0.02 -Water_Link_23 23.0 0.002 0.02 -Water_Link_23 24.0 0.002 0.02 -Water_Link_34 1.0 0.002 0.02 -Water_Link_34 2.0 0.002 0.02 -Water_Link_34 3.0 0.002 0.02 -Water_Link_34 4.0 0.002 0.02 -Water_Link_34 5.0 0.002 0.02 -Water_Link_34 6.0 0.002 0.02 -Water_Link_34 7.0 0.002 0.02 -Water_Link_34 8.0 0.002 0.02 -Water_Link_34 9.0 0.002 0.02 -Water_Link_34 10.0 0.002 0.02 -Water_Link_34 11.0 0.002 0.02 -Water_Link_34 12.0 0.002 0.0025 -Water_Link_34 13.0 0.002 0.0025 -Water_Link_34 14.0 0.002 0.0025 -Water_Link_34 15.0 0.002 0.0025 -Water_Link_34 16.0 0.002 0.0025 -Water_Link_34 17.0 0.002 0.0025 -Water_Link_34 18.0 0.002 0.0025 -Water_Link_34 19.0 0.002 0.0025 -Water_Link_34 20.0 0.002 0.02 -Water_Link_34 21.0 0.002 0.02 -Water_Link_34 22.0 0.002 0.02 -Water_Link_34 23.0 0.002 0.02 -Water_Link_34 24.0 0.002 0.02 -Water_Link_45 1.0 0.002 0.02 -Water_Link_45 2.0 0.002 0.02 -Water_Link_45 3.0 0.002 0.02 -Water_Link_45 4.0 0.002 0.02 -Water_Link_45 5.0 0.002 0.02 -Water_Link_45 6.0 0.002 0.02 -Water_Link_45 7.0 0.002 0.02 -Water_Link_45 8.0 0.002 0.02 -Water_Link_45 9.0 0.002 0.02 -Water_Link_45 10.0 0.002 0.02 -Water_Link_45 11.0 0.002 0.02 -Water_Link_45 12.0 0.002 0.02 -Water_Link_45 13.0 0.002 0.02 -Water_Link_45 14.0 0.002 0.02 -Water_Link_45 15.0 0.002 0.02 -Water_Link_45 16.0 0.002 0.02 -Water_Link_45 17.0 0.002 0.02 -Water_Link_45 18.0 0.002 0.02 -Water_Link_45 19.0 0.002 0.02 -Water_Link_45 20.0 0.002 0.02 -Water_Link_45 21.0 0.002 0.02 -Water_Link_45 22.0 0.002 0.02 -Water_Link_45 23.0 0.002 0.02 -Water_Link_45 24.0 0.002 0.02 +water_link timepoint min_tmp_flow_vol_per_second max_tmp_flow_vol_per_second threshold_side_stream_vol_per_second +Water_Link_12 1.0 0.002 0.02 . +Water_Link_12 2.0 0.002 0.02 . +Water_Link_12 3.0 0.002 0.02 . +Water_Link_12 4.0 0.002 0.02 . +Water_Link_12 5.0 0.002 0.02 . +Water_Link_12 6.0 0.002 0.02 . +Water_Link_12 7.0 0.002 0.02 . +Water_Link_12 8.0 0.002 0.02 . +Water_Link_12 9.0 0.002 0.02 . +Water_Link_12 10.0 0.002 0.02 . +Water_Link_12 11.0 0.002 0.02 . +Water_Link_12 12.0 0.002 0.0025 . +Water_Link_12 13.0 0.002 0.0025 . +Water_Link_12 14.0 0.002 0.0025 . +Water_Link_12 15.0 0.002 0.0025 . +Water_Link_12 16.0 0.002 0.0025 . +Water_Link_12 17.0 0.002 0.0025 . +Water_Link_12 18.0 0.002 0.0025 . +Water_Link_12 19.0 0.002 0.0025 . +Water_Link_12 20.0 0.002 0.02 . +Water_Link_12 21.0 0.002 0.02 . +Water_Link_12 22.0 0.002 0.02 . +Water_Link_12 23.0 0.002 0.02 . +Water_Link_12 24.0 0.002 0.02 . +Water_Link_23 1.0 0.002 0.02 . +Water_Link_23 2.0 0.002 0.02 . +Water_Link_23 3.0 0.002 0.02 . +Water_Link_23 4.0 0.002 0.02 . +Water_Link_23 5.0 0.002 0.02 . +Water_Link_23 6.0 0.002 0.02 . +Water_Link_23 7.0 0.002 0.02 . +Water_Link_23 8.0 0.002 0.02 . +Water_Link_23 9.0 0.002 0.02 . +Water_Link_23 10.0 0.002 0.02 . +Water_Link_23 11.0 0.002 0.02 . +Water_Link_23 12.0 0.002 0.0025 . +Water_Link_23 13.0 0.002 0.0025 . +Water_Link_23 14.0 0.002 0.0025 . +Water_Link_23 15.0 0.002 0.0025 . +Water_Link_23 16.0 0.002 0.0025 . +Water_Link_23 17.0 0.002 0.0025 . +Water_Link_23 18.0 0.002 0.0025 . +Water_Link_23 19.0 0.002 0.0025 . +Water_Link_23 20.0 0.002 0.02 . +Water_Link_23 21.0 0.002 0.02 . +Water_Link_23 22.0 0.002 0.02 . +Water_Link_23 23.0 0.002 0.02 . +Water_Link_23 24.0 0.002 0.02 . +Water_Link_34 1.0 0.002 0.02 . +Water_Link_34 2.0 0.002 0.02 . +Water_Link_34 3.0 0.002 0.02 . +Water_Link_34 4.0 0.002 0.02 . +Water_Link_34 5.0 0.002 0.02 . +Water_Link_34 6.0 0.002 0.02 . +Water_Link_34 7.0 0.002 0.02 . +Water_Link_34 8.0 0.002 0.02 . +Water_Link_34 9.0 0.002 0.02 . +Water_Link_34 10.0 0.002 0.02 . +Water_Link_34 11.0 0.002 0.02 . +Water_Link_34 12.0 0.002 0.0025 . +Water_Link_34 13.0 0.002 0.0025 . +Water_Link_34 14.0 0.002 0.0025 . +Water_Link_34 15.0 0.002 0.0025 . +Water_Link_34 16.0 0.002 0.0025 . +Water_Link_34 17.0 0.002 0.0025 . +Water_Link_34 18.0 0.002 0.0025 . +Water_Link_34 19.0 0.002 0.0025 . +Water_Link_34 20.0 0.002 0.02 . +Water_Link_34 21.0 0.002 0.02 . +Water_Link_34 22.0 0.002 0.02 . +Water_Link_34 23.0 0.002 0.02 . +Water_Link_34 24.0 0.002 0.02 . +Water_Link_45 1.0 0.002 0.02 . +Water_Link_45 2.0 0.002 0.02 . +Water_Link_45 3.0 0.002 0.02 . +Water_Link_45 4.0 0.002 0.02 . +Water_Link_45 5.0 0.002 0.02 . +Water_Link_45 6.0 0.002 0.02 . +Water_Link_45 7.0 0.002 0.02 . +Water_Link_45 8.0 0.002 0.02 . +Water_Link_45 9.0 0.002 0.02 . +Water_Link_45 10.0 0.002 0.02 . +Water_Link_45 11.0 0.002 0.02 . +Water_Link_45 12.0 0.002 0.02 . +Water_Link_45 13.0 0.002 0.02 . +Water_Link_45 14.0 0.002 0.02 . +Water_Link_45 15.0 0.002 0.02 . +Water_Link_45 16.0 0.002 0.02 . +Water_Link_45 17.0 0.002 0.02 . +Water_Link_45 18.0 0.002 0.02 . +Water_Link_45 19.0 0.002 0.02 . +Water_Link_45 20.0 0.002 0.02 . +Water_Link_45 21.0 0.002 0.02 . +Water_Link_45 22.0 0.002 0.02 . +Water_Link_45 23.0 0.002 0.02 . +Water_Link_45 24.0 0.002 0.02 . diff --git a/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/features.csv b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/features.csv new file mode 100644 index 0000000000..25b31a379a --- /dev/null +++ b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/features.csv @@ -0,0 +1,2 @@ +features +water diff --git a/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/fuel_prices.tab b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/fuel_prices.tab new file mode 100644 index 0000000000..774319c793 --- /dev/null +++ b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/fuel_prices.tab @@ -0,0 +1 @@ +fuel period month fuel_price_per_mmbtu diff --git a/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/fuels.tab b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/fuels.tab new file mode 100644 index 0000000000..9626eb5932 --- /dev/null +++ b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/fuels.tab @@ -0,0 +1 @@ +fuel co2_intensity_tons_per_mmbtu fuel_group diff --git a/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/horizon_user_defined_timepoints.tab b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/horizon_user_defined_timepoints.tab new file mode 100644 index 0000000000..5f2b3c3a8d --- /dev/null +++ b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/horizon_user_defined_timepoints.tab @@ -0,0 +1,49 @@ +horizon balancing_type_horizon timepoint +1 day 1 +1 day 2 +1 day 3 +1 day 4 +1 day 5 +1 day 6 +1 day 7 +1 day 8 +1 day 9 +1 day 10 +1 day 11 +1 day 12 +1 day 13 +1 day 14 +1 day 15 +1 day 16 +1 day 17 +1 day 18 +1 day 19 +1 day 20 +1 day 21 +1 day 22 +1 day 23 +1 day 24 +1 half_day 1 +1 half_day 2 +1 half_day 3 +1 half_day 4 +1 half_day 5 +1 half_day 6 +1 half_day 7 +1 half_day 8 +1 half_day 9 +1 half_day 10 +1 half_day 11 +1 half_day 12 +2 half_day 13 +2 half_day 14 +2 half_day 15 +2 half_day 16 +2 half_day 17 +2 half_day 18 +2 half_day 19 +2 half_day 20 +2 half_day 21 +2 half_day 22 +2 half_day 23 +2 half_day 24 diff --git a/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/horizons_user_defined.tab b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/horizons_user_defined.tab new file mode 100644 index 0000000000..facde96509 --- /dev/null +++ b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/horizons_user_defined.tab @@ -0,0 +1,4 @@ +horizon balancing_type_horizon boundary +1 day circular +1 half_day circular +2 half_day circular diff --git a/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/load_component_params.tab b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/load_component_params.tab new file mode 100644 index 0000000000..e6ad781f4f --- /dev/null +++ b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/load_component_params.tab @@ -0,0 +1,2 @@ +load_zone load_component load_level_default load_component_distribution_loss_adjustment_factor +Zone1 all . . diff --git a/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/load_mw.tab b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/load_mw.tab new file mode 100644 index 0000000000..3011e72ee5 --- /dev/null +++ b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/load_mw.tab @@ -0,0 +1,25 @@ +load_zone timepoint load_component load_mw +Zone1 1 all 77.84 +Zone1 2 all 75.76 +Zone1 3 all 73.52 +Zone1 4 all 74.16 +Zone1 5 all 74.16 +Zone1 6 all 75.84 +Zone1 7 all 78.96 +Zone1 8 all 84.744 +Zone1 9 all 88.264 +Zone1 10 all 90.464 +Zone1 11 all 93.984 +Zone1 12 all 102.528 +Zone1 13 all 103.872 +Zone1 14 all 104.256 +Zone1 15 all 106.272 +Zone1 16 all 106.368 +Zone1 17 all 111.456 +Zone1 18 all 109.248 +Zone1 19 all 107.904 +Zone1 20 all 98.384 +Zone1 21 all 96.096 +Zone1 22 all 93.104 +Zone1 23 all 82.656 +Zone1 24 all 77.868 diff --git a/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/load_zones.tab b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/load_zones.tab new file mode 100644 index 0000000000..3f0fb64d00 --- /dev/null +++ b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/load_zones.tab @@ -0,0 +1,2 @@ +load_zone allow_overgeneration overgeneration_penalty_per_mw allow_unserved_energy unserved_energy_penalty_per_mwh unserved_energy_limit_mwh max_unserved_load_penalty_per_mw max_unserved_load_limit_mw avg_unserved_load_penalty_per_mwa export_penalty_cost_per_mwh +Zone1 1 99999999.0 1 99999999.0 . 0.0 . . 0.0 diff --git a/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/periods.tab b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/periods.tab new file mode 100644 index 0000000000..4ea15468e6 --- /dev/null +++ b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/periods.tab @@ -0,0 +1,2 @@ +period discount_factor period_start_year period_end_year hours_in_period_timepoints prev_period +2026 1.0 2026.0 2027.0 8760.0 . diff --git a/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/powerhouses.tab b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/powerhouses.tab new file mode 100644 index 0000000000..dc54630821 --- /dev/null +++ b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/powerhouses.tab @@ -0,0 +1,4 @@ +powerhouse powerhouse_water_node tailwater_elevation headloss_factor turbine_efficiency +Powerhouse1 Water_Node_1 800.0 0.05 0.9 +Powerhouse2 Water_Node_2 400.0 0.05 0.9 +Powerhouse3 Water_Node_3 100.0 0.05 0.9 diff --git a/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/projects.tab b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/projects.tab new file mode 100644 index 0000000000..ff6ee03a4f --- /dev/null +++ b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/projects.tab @@ -0,0 +1,7 @@ +project capacity_type availability_type operational_type balancing_type_project load_modifier_flag distribution_loss_adjustment_factor 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 ramp_tuning_cost_per_mw min_up_time_hours min_up_time_violation_penalty min_down_time_hours min_down_time_violation_penalty allow_startup_shutdown_power storage_efficiency 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 cap_factor_default powerunithour_per_fuelunit soc_penalty_cost_per_energyunit soc_last_tmp_penalty_cost_per_energyunit max_losses_in_hrz_frac_stor_energy_capacity partial_availability_threshold nonfuel_carbon_emissions_per_mwh powerhouse generator_efficiency linked_load_component efficiency_factor energy_requirement_factor losses_factor_in_energy_target losses_factor_curtailment upward_reserves_to_soc_depletion +Gen11 gen_spec . gen_hydro_water day 0 0.0 Hydro_Water Zone1 0.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Powerhouse1 0.95 . . . . . . +Gen12 gen_spec . gen_hydro_water day 0 0.0 Hydro_Water Zone1 0.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Powerhouse1 0.95 . . . . . . +Gen21 gen_spec . gen_hydro_water day 0 0.0 Hydro_Water Zone1 0.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Powerhouse2 0.95 . . . . . . +Gen22 gen_spec . gen_hydro_water day 0 0.0 Hydro_Water Zone1 0.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Powerhouse2 0.95 . . . . . . +Gen31 gen_spec . gen_hydro_water day 0 0.0 Hydro_Water Zone1 0.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Powerhouse3 0.95 . . . . . . +Gen32 gen_spec . gen_hydro_water day 0 0.0 Hydro_Water Zone1 0.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Powerhouse3 0.95 . . . . . . diff --git a/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/reservoir_constant_elevations.tab b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/reservoir_constant_elevations.tab new file mode 100644 index 0000000000..b4b1ba906a --- /dev/null +++ b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/reservoir_constant_elevations.tab @@ -0,0 +1,2 @@ +reservoir constant_elevation +Water_Node_3 265.0 diff --git a/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/reservoir_exogenous_elevations.tab b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/reservoir_exogenous_elevations.tab new file mode 100644 index 0000000000..d1f671335f --- /dev/null +++ b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/reservoir_exogenous_elevations.tab @@ -0,0 +1,49 @@ +reservoir timepoint exogenous_elevation +Water_Node_1 1 950 +Water_Node_1 2 950 +Water_Node_1 3 950 +Water_Node_1 4 950 +Water_Node_1 5 950 +Water_Node_1 6 950 +Water_Node_1 7 950 +Water_Node_1 8 950 +Water_Node_1 9 950 +Water_Node_1 10 950 +Water_Node_1 11 950 +Water_Node_1 12 950 +Water_Node_1 13 950 +Water_Node_1 14 950 +Water_Node_1 15 950 +Water_Node_1 16 950 +Water_Node_1 17 950 +Water_Node_1 18 950 +Water_Node_1 19 950 +Water_Node_1 20 950 +Water_Node_1 21 950 +Water_Node_1 22 950 +Water_Node_1 23 950 +Water_Node_1 24 950 +Water_Node_2 1 600 +Water_Node_2 2 600 +Water_Node_2 3 600 +Water_Node_2 4 600 +Water_Node_2 5 600 +Water_Node_2 6 600 +Water_Node_2 7 600 +Water_Node_2 8 600 +Water_Node_2 9 600 +Water_Node_2 10 600 +Water_Node_2 11 600 +Water_Node_2 12 600 +Water_Node_2 13 600 +Water_Node_2 14 600 +Water_Node_2 15 600 +Water_Node_2 16 600 +Water_Node_2 17 600 +Water_Node_2 18 600 +Water_Node_2 19 600 +Water_Node_2 20 600 +Water_Node_2 21 600 +Water_Node_2 22 600 +Water_Node_2 23 600 +Water_Node_2 24 600 diff --git a/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/reservoir_target_starting_volumes.tab b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/reservoir_target_starting_volumes.tab new file mode 100644 index 0000000000..7e8e49ea90 --- /dev/null +++ b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/reservoir_target_starting_volumes.tab @@ -0,0 +1,4 @@ +water_node timepoint reservoir_target_starting_volume +Water_Node_1 1.0 23750 +Water_Node_2 1.0 1500 +Water_Node_3 1.0 62.5 diff --git a/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/spec_capacity_period_params.tab b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/spec_capacity_period_params.tab new file mode 100644 index 0000000000..96fc686352 --- /dev/null +++ b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/spec_capacity_period_params.tab @@ -0,0 +1,7 @@ +project period specified_capacity_mw specified_energy_mwh shaping_capacity_mw hyb_gen_specified_capacity_mw hyb_stor_specified_capacity_mw specified_stor_capacity_mwh fuel_production_capacity_fuelunitperhour fuel_release_capacity_fuelunitperhour fuel_storage_capacity_fuelunit fixed_cost_per_mw_yr fixed_cost_per_energy_mwh_yr fixed_cost_per_shaping_mw_yr hyb_gen_fixed_cost_per_mw_yr hyb_stor_fixed_cost_per_mw_yr fixed_cost_per_stor_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 +Gen11 2026 225.0 +Gen12 2026 225.0 +Gen21 2026 80.0 +Gen22 2026 80.0 +Gen31 2026 85.0 +Gen32 2026 85.0 diff --git a/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/timepoints.tab b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/timepoints.tab new file mode 100644 index 0000000000..3f22e2346b --- /dev/null +++ b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/timepoints.tab @@ -0,0 +1,25 @@ +timepoint period timepoint_weight number_of_hours_in_timepoint previous_stage_timepoint_map month day_of_month hour_of_day +1 2026 365.0 1 . 1 1 1.0 +2 2026 365.0 1 . 1 1 2.0 +3 2026 365.0 1 . 1 1 3.0 +4 2026 365.0 1 . 1 1 4.0 +5 2026 365.0 1 . 1 1 5.0 +6 2026 365.0 1 . 1 1 6.0 +7 2026 365.0 1 . 1 1 7.0 +8 2026 365.0 1 . 1 1 8.0 +9 2026 365.0 1 . 1 1 9.0 +10 2026 365.0 1 . 1 1 10.0 +11 2026 365.0 1 . 1 1 11.0 +12 2026 365.0 1 . 1 1 12.0 +13 2026 365.0 1 . 1 1 13.0 +14 2026 365.0 1 . 1 1 14.0 +15 2026 365.0 1 . 1 1 15.0 +16 2026 365.0 1 . 1 1 16.0 +17 2026 365.0 1 . 1 1 17.0 +18 2026 365.0 1 . 1 1 18.0 +19 2026 365.0 1 . 1 1 19.0 +20 2026 365.0 1 . 1 1 20.0 +21 2026 365.0 1 . 1 1 21.0 +22 2026 365.0 1 . 1 1 22.0 +23 2026 365.0 1 . 1 1 23.0 +24 2026 365.0 1 . 1 1 24.0 diff --git a/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/water_flow_params.tab b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/water_flow_params.tab new file mode 100644 index 0000000000..091847d2e6 --- /dev/null +++ b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/water_flow_params.tab @@ -0,0 +1,5 @@ +water_link default_min_flow_vol_per_sec allow_water_link_min_flow_violation min_flow_violation_penalty_cost allow_water_link_max_flow_violation max_flow_violation_penalty_cost allow_water_link_hrz_min_flow_violation hrz_min_flow_violation_penalty_cost_per_hour allow_water_link_hrz_max_flow_violation hrz_max_flow_violation_penalty_cost_per_hour +Water_Link_12 0.0 . . . . . . . . +Water_Link_23 0.0 . . . . . . . . +Water_Link_34 0.0 . . . . . . . . +Water_Link_45 0.0 . . . . . . . . diff --git a/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/water_flow_tmp_bounds.tab b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/water_flow_tmp_bounds.tab new file mode 100644 index 0000000000..764f1b69a9 --- /dev/null +++ b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/water_flow_tmp_bounds.tab @@ -0,0 +1,97 @@ +water_link timepoint min_tmp_flow_vol_per_second max_tmp_flow_vol_per_second threshold_side_stream_vol_per_second +Water_Link_12 1.0 0.002 0.02 0.001 +Water_Link_12 2.0 0.002 0.02 0.001 +Water_Link_12 3.0 0.002 0.02 0.001 +Water_Link_12 4.0 0.002 0.02 0.001 +Water_Link_12 5.0 0.002 0.02 0.001 +Water_Link_12 6.0 0.002 0.02 0.001 +Water_Link_12 7.0 0.002 0.02 0.001 +Water_Link_12 8.0 0.002 0.02 0.001 +Water_Link_12 9.0 0.002 0.02 0.001 +Water_Link_12 10.0 0.002 0.02 0.001 +Water_Link_12 11.0 0.002 0.02 0.001 +Water_Link_12 12.0 0.002 0.0025 0.001 +Water_Link_12 13.0 0.002 0.0025 0.001 +Water_Link_12 14.0 0.002 0.0025 0.001 +Water_Link_12 15.0 0.002 0.0025 0.001 +Water_Link_12 16.0 0.002 0.0025 0.001 +Water_Link_12 17.0 0.002 0.0025 0.001 +Water_Link_12 18.0 0.002 0.0025 0.001 +Water_Link_12 19.0 0.002 0.0025 0.001 +Water_Link_12 20.0 0.002 0.02 0.001 +Water_Link_12 21.0 0.002 0.02 0.001 +Water_Link_12 22.0 0.002 0.02 0.001 +Water_Link_12 23.0 0.002 0.02 0.001 +Water_Link_12 24.0 0.002 0.02 0.001 +Water_Link_23 1.0 0.002 0.02 0.001 +Water_Link_23 2.0 0.002 0.02 0.001 +Water_Link_23 3.0 0.002 0.02 0.001 +Water_Link_23 4.0 0.002 0.02 0.001 +Water_Link_23 5.0 0.002 0.02 0.001 +Water_Link_23 6.0 0.002 0.02 0.001 +Water_Link_23 7.0 0.002 0.02 0.001 +Water_Link_23 8.0 0.002 0.02 0.001 +Water_Link_23 9.0 0.002 0.02 0.001 +Water_Link_23 10.0 0.002 0.02 0.001 +Water_Link_23 11.0 0.002 0.02 0.001 +Water_Link_23 12.0 0.002 0.0025 0.001 +Water_Link_23 13.0 0.002 0.0025 0.001 +Water_Link_23 14.0 0.002 0.0025 0.001 +Water_Link_23 15.0 0.002 0.0025 0.001 +Water_Link_23 16.0 0.002 0.0025 0.001 +Water_Link_23 17.0 0.002 0.0025 0.001 +Water_Link_23 18.0 0.002 0.0025 0.001 +Water_Link_23 19.0 0.002 0.0025 0.001 +Water_Link_23 20.0 0.002 0.02 0.001 +Water_Link_23 21.0 0.002 0.02 0.001 +Water_Link_23 22.0 0.002 0.02 0.001 +Water_Link_23 23.0 0.002 0.02 0.001 +Water_Link_23 24.0 0.002 0.02 0.001 +Water_Link_34 1.0 0.002 0.02 0.001 +Water_Link_34 2.0 0.002 0.02 0.001 +Water_Link_34 3.0 0.002 0.02 0.001 +Water_Link_34 4.0 0.002 0.02 0.001 +Water_Link_34 5.0 0.002 0.02 0.001 +Water_Link_34 6.0 0.002 0.02 0.001 +Water_Link_34 7.0 0.002 0.02 0.001 +Water_Link_34 8.0 0.002 0.02 0.001 +Water_Link_34 9.0 0.002 0.02 0.001 +Water_Link_34 10.0 0.002 0.02 0.001 +Water_Link_34 11.0 0.002 0.02 0.001 +Water_Link_34 12.0 0.002 0.0025 0.001 +Water_Link_34 13.0 0.002 0.0025 0.001 +Water_Link_34 14.0 0.002 0.0025 0.001 +Water_Link_34 15.0 0.002 0.0025 0.001 +Water_Link_34 16.0 0.002 0.0025 0.001 +Water_Link_34 17.0 0.002 0.0025 0.001 +Water_Link_34 18.0 0.002 0.0025 0.001 +Water_Link_34 19.0 0.002 0.0025 0.001 +Water_Link_34 20.0 0.002 0.02 0.001 +Water_Link_34 21.0 0.002 0.02 0.001 +Water_Link_34 22.0 0.002 0.02 0.001 +Water_Link_34 23.0 0.002 0.02 0.001 +Water_Link_34 24.0 0.002 0.02 0.001 +Water_Link_45 1.0 0.002 0.02 . +Water_Link_45 2.0 0.002 0.02 . +Water_Link_45 3.0 0.002 0.02 . +Water_Link_45 4.0 0.002 0.02 . +Water_Link_45 5.0 0.002 0.02 . +Water_Link_45 6.0 0.002 0.02 . +Water_Link_45 7.0 0.002 0.02 . +Water_Link_45 8.0 0.002 0.02 . +Water_Link_45 9.0 0.002 0.02 . +Water_Link_45 10.0 0.002 0.02 . +Water_Link_45 11.0 0.002 0.02 . +Water_Link_45 12.0 0.002 0.02 . +Water_Link_45 13.0 0.002 0.02 . +Water_Link_45 14.0 0.002 0.02 . +Water_Link_45 15.0 0.002 0.02 . +Water_Link_45 16.0 0.002 0.02 . +Water_Link_45 17.0 0.002 0.02 . +Water_Link_45 18.0 0.002 0.02 . +Water_Link_45 19.0 0.002 0.02 . +Water_Link_45 20.0 0.002 0.02 . +Water_Link_45 21.0 0.002 0.02 . +Water_Link_45 22.0 0.002 0.02 . +Water_Link_45 23.0 0.002 0.02 . +Water_Link_45 24.0 0.002 0.02 . diff --git a/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/water_flow_water_link_upstream_flow_map.tab b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/water_flow_water_link_upstream_flow_map.tab new file mode 100644 index 0000000000..d70d1bbca8 --- /dev/null +++ b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/water_flow_water_link_upstream_flow_map.tab @@ -0,0 +1,4 @@ +water_link upstream_water_node +Water_Link_12 Water_Node_1 +Water_Link_23 Water_Node_2 +Water_Link_34 Water_Node_3 diff --git a/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/water_inflows.tab b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/water_inflows.tab new file mode 100644 index 0000000000..4f3c9d981e --- /dev/null +++ b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/water_inflows.tab @@ -0,0 +1,121 @@ +water_node timepoint exogenous_water_inflow_rate_vol_per_sec +Water_Node_1 1.0 0.003 +Water_Node_1 2.0 0.003 +Water_Node_1 3.0 0.003 +Water_Node_1 4.0 0.003 +Water_Node_1 5.0 0.003 +Water_Node_1 6.0 0.003 +Water_Node_1 7.0 0.003 +Water_Node_1 8.0 0.003 +Water_Node_1 9.0 0.003 +Water_Node_1 10.0 0.003 +Water_Node_1 11.0 0.003 +Water_Node_1 12.0 0.003 +Water_Node_1 13.0 0.003 +Water_Node_1 14.0 0.003 +Water_Node_1 15.0 0.003 +Water_Node_1 16.0 0.003 +Water_Node_1 17.0 0.003 +Water_Node_1 18.0 0.003 +Water_Node_1 19.0 0.003 +Water_Node_1 20.0 0.003 +Water_Node_1 21.0 0.003 +Water_Node_1 22.0 0.003 +Water_Node_1 23.0 0.003 +Water_Node_1 24.0 0.003 +Water_Node_2 1.0 0.0001 +Water_Node_2 2.0 0.0001 +Water_Node_2 3.0 0.0001 +Water_Node_2 4.0 0.0001 +Water_Node_2 5.0 0.0001 +Water_Node_2 6.0 0.0001 +Water_Node_2 7.0 0.0001 +Water_Node_2 8.0 0.0001 +Water_Node_2 9.0 0.0001 +Water_Node_2 10.0 0.0001 +Water_Node_2 11.0 0.0001 +Water_Node_2 12.0 0.0001 +Water_Node_2 13.0 0.0001 +Water_Node_2 14.0 0.0001 +Water_Node_2 15.0 0.0001 +Water_Node_2 16.0 0.0001 +Water_Node_2 17.0 0.0001 +Water_Node_2 18.0 0.0001 +Water_Node_2 19.0 0.0001 +Water_Node_2 20.0 0.0001 +Water_Node_2 21.0 0.0001 +Water_Node_2 22.0 0.0001 +Water_Node_2 23.0 0.0001 +Water_Node_2 24.0 0.0001 +Water_Node_3 1.0 0.0001 +Water_Node_3 2.0 0.0001 +Water_Node_3 3.0 0.0001 +Water_Node_3 4.0 0.0001 +Water_Node_3 5.0 0.0001 +Water_Node_3 6.0 0.0001 +Water_Node_3 7.0 0.0001 +Water_Node_3 8.0 0.0001 +Water_Node_3 9.0 0.0001 +Water_Node_3 10.0 0.0001 +Water_Node_3 11.0 0.0001 +Water_Node_3 12.0 0.0001 +Water_Node_3 13.0 0.0001 +Water_Node_3 14.0 0.0001 +Water_Node_3 15.0 0.0001 +Water_Node_3 16.0 0.0001 +Water_Node_3 17.0 0.0001 +Water_Node_3 18.0 0.0001 +Water_Node_3 19.0 0.0001 +Water_Node_3 20.0 0.0001 +Water_Node_3 21.0 0.0001 +Water_Node_3 22.0 0.0001 +Water_Node_3 23.0 0.0001 +Water_Node_3 24.0 0.0001 +Water_Node_4 1.0 5.0e-05 +Water_Node_4 2.0 5.0e-05 +Water_Node_4 3.0 5.0e-05 +Water_Node_4 4.0 5.0e-05 +Water_Node_4 5.0 5.0e-05 +Water_Node_4 6.0 5.0e-05 +Water_Node_4 7.0 5.0e-05 +Water_Node_4 8.0 5.0e-05 +Water_Node_4 9.0 5.0e-05 +Water_Node_4 10.0 5.0e-05 +Water_Node_4 11.0 5.0e-05 +Water_Node_4 12.0 5.0e-05 +Water_Node_4 13.0 5.0e-05 +Water_Node_4 14.0 5.0e-05 +Water_Node_4 15.0 5.0e-05 +Water_Node_4 16.0 5.0e-05 +Water_Node_4 17.0 5.0e-05 +Water_Node_4 18.0 5.0e-05 +Water_Node_4 19.0 5.0e-05 +Water_Node_4 20.0 5.0e-05 +Water_Node_4 21.0 5.0e-05 +Water_Node_4 22.0 5.0e-05 +Water_Node_4 23.0 5.0e-05 +Water_Node_4 24.0 5.0e-05 +Water_Node_5 1.0 5.0e-05 +Water_Node_5 2.0 5.0e-05 +Water_Node_5 3.0 5.0e-05 +Water_Node_5 4.0 5.0e-05 +Water_Node_5 5.0 5.0e-05 +Water_Node_5 6.0 5.0e-05 +Water_Node_5 7.0 5.0e-05 +Water_Node_5 8.0 5.0e-05 +Water_Node_5 9.0 5.0e-05 +Water_Node_5 10.0 5.0e-05 +Water_Node_5 11.0 5.0e-05 +Water_Node_5 12.0 5.0e-05 +Water_Node_5 13.0 5.0e-05 +Water_Node_5 14.0 5.0e-05 +Water_Node_5 15.0 5.0e-05 +Water_Node_5 16.0 5.0e-05 +Water_Node_5 17.0 5.0e-05 +Water_Node_5 18.0 5.0e-05 +Water_Node_5 19.0 5.0e-05 +Water_Node_5 20.0 5.0e-05 +Water_Node_5 21.0 5.0e-05 +Water_Node_5 22.0 5.0e-05 +Water_Node_5 23.0 5.0e-05 +Water_Node_5 24.0 5.0e-05 diff --git a/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/water_network.tab b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/water_network.tab new file mode 100644 index 0000000000..54799f90f5 --- /dev/null +++ b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/water_network.tab @@ -0,0 +1,5 @@ +water_link water_node_from water_node_to water_link_flow_transport_time_hours +Water_Link_12 Water_Node_1 Water_Node_2 0.0 +Water_Link_23 Water_Node_2 Water_Node_3 0.0 +Water_Link_34 Water_Node_3 Water_Node_4 0.0 +Water_Link_45 Water_Node_4 Water_Node_5 0.0 diff --git a/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/water_node_reservoirs.tab b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/water_node_reservoirs.tab new file mode 100644 index 0000000000..68dd15cca5 --- /dev/null +++ b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/water_node_reservoirs.tab @@ -0,0 +1,4 @@ +water_node max_powerhouse_release_vol_unit_per_sec max_spill_vol_unit_per_sec max_total_outflow_vol_unit_per_sec allow_target_release_violation target_release_violation_cost minimum_volume_volumeunit maximum_volume_volumeunit allow_min_volume_violation min_volume_violation_cost allow_max_volume_violation max_volume_violation_cost evaporation_coefficient elevation_type +Water_Node_1 0.1 0.1 0.15 . . 22500.0 25000.0 . . . . 0.0 exogenous +Water_Node_2 0.1 0.1 0.15 . . 1250.0 1750.0 . . . . 0.0 exogenous +Water_Node_3 0.1 0.1 0.15 . . 50.0 75.0 . . . . 0.0 constant diff --git a/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/water_system_params.tab b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/water_system_params.tab new file mode 100644 index 0000000000..20d51e51c4 --- /dev/null +++ b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/inputs/water_system_params.tab @@ -0,0 +1,2 @@ +water_system_balancing_type theoretical_power_coefficient +day 84.7 diff --git a/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/results/objective_function_value.txt b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/results/objective_function_value.txt new file mode 100644 index 0000000000..b4cb3c0a9e --- /dev/null +++ b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/results/objective_function_value.txt @@ -0,0 +1 @@ +-82917026358.33 \ No newline at end of file diff --git a/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/results/solver_status.txt b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/results/solver_status.txt new file mode 100644 index 0000000000..b5754e2037 --- /dev/null +++ b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/results/solver_status.txt @@ -0,0 +1 @@ +ok \ No newline at end of file diff --git a/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/results/termination_condition.txt b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/results/termination_condition.txt new file mode 100644 index 0000000000..644457f4c2 --- /dev/null +++ b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/hydro_iteration_1/results/termination_condition.txt @@ -0,0 +1 @@ +optimal \ No newline at end of file diff --git a/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/scenario_description.csv b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/scenario_description.csv new file mode 100644 index 0000000000..585bc66a72 --- /dev/null +++ b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/scenario_description.csv @@ -0,0 +1,159 @@ +scenario_id,173 +scenario_name,hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold +of_transmission, +of_transmission_hurdle_rates, +of_transmission_hurdle_rates_by_timepoint, +of_simultaneous_flow_limits, +of_lf_reserves_up, +of_lf_reserves_down, +of_regulation_up, +of_regulation_down, +of_frequency_response, +of_spinning_reserves, +of_inertia_reserves, +of_period_energy_target, +of_horizon_energy_target, +of_transmission_target, +of_instantaneous_penetration, +of_carbon_cap, +of_track_carbon_imports, +of_carbon_tax, +of_performance_standard, +of_carbon_credits, +of_fuel_burn_limit, +of_subsidies, +of_prm, +of_capacity_transfers, +of_deliverability, +of_elcc_surface, +of_local_capacity, +of_markets, +of_water,1 +of_tuning, +of_policy, +temporal_scenario_id,20 +load_zone_scenario_id,1 +load_balance_scenario_id,1 +lf_reserves_up_ba_scenario_id,NULL +lf_reserves_down_ba_scenario_id,NULL +regulation_up_ba_scenario_id,NULL +regulation_down_ba_scenario_id,NULL +frequency_response_ba_scenario_id,NULL +spinning_reserves_ba_scenario_id,NULL +inertia_reserves_ba_scenario_id,NULL +energy_target_zone_scenario_id,NULL +instantaneous_penetration_zone_scenario_id,NULL +transmission_target_zone_scenario_id,NULL +carbon_cap_zone_scenario_id,NULL +carbon_tax_zone_scenario_id,NULL +performance_standard_zone_scenario_id,NULL +carbon_credits_zone_scenario_id,NULL +carbon_cap_zones_carbon_credits_zones_scenario_id,NULL +performance_standard_zones_carbon_credits_zones_scenario_id,NULL +carbon_tax_zones_carbon_credits_zones_scenario_id,NULL +carbon_credits_params_scenario_id,NULL +fuel_burn_limit_ba_scenario_id,NULL +policy_zone_scenario_id,NULL +prm_zone_scenario_id,NULL +local_capacity_zone_scenario_id,NULL +market_scenario_id,NULL +water_system_params_scenario_id,1 +water_network_scenario_id,1 +project_portfolio_scenario_id,24 +project_operational_chars_scenario_id,1 +stor_stress_hrz_type_scenario_id,NULL +project_availability_scenario_id,1 +fuel_scenario_id,NULL +project_load_zone_scenario_id,1 +project_lf_reserves_up_ba_scenario_id,NULL +project_lf_reserves_down_ba_scenario_id,NULL +project_regulation_up_ba_scenario_id,NULL +project_regulation_down_ba_scenario_id,NULL +project_frequency_response_ba_scenario_id,NULL +project_spinning_reserves_ba_scenario_id,NULL +project_inertia_reserves_ba_scenario_id,NULL +project_energy_target_zone_scenario_id,NULL +transmission_energy_target_zone_scenario_id,NULL +project_instantaneous_penetration_zone_scenario_id,NULL +tx_line_transmission_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_carbon_credits_generation_zone_scenario_id,NULL +project_carbon_credits_purchase_zone_scenario_id,NULL +project_carbon_credits_purchase_limits_scenario_id,NULL +project_carbon_credits_scenario_id,NULL +project_fuel_burn_limit_ba_scenario_id,NULL +fuel_fuel_burn_limit_ba_scenario_id,NULL +project_policy_zone_scenario_id,NULL +transmission_policy_zone_scenario_id,NULL +project_prm_zone_scenario_id,NULL +prm_capacity_transfer_scenario_id,NULL +prm_capacity_transfer_params_scenario_id,NULL +transmission_prm_zone_scenario_id,NULL +project_elcc_chars_scenario_id,NULL +prm_deliverability_cost_scenario_id,NULL +prm_deliverability_existing_scenario_id,NULL +prm_deliverability_potential_scenario_id,NULL +project_prm_deliverability_multipliers_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,NULL +fuel_price_scenario_id,NULL +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_relative_capacity_requirement_scenario_id,NULL +project_capacity_group_scenario_id,NULL +project_power_output_group_requirement_scenario_id,NULL +project_power_output_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_hurdle_rate_by_timepoint_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,7 +lf_reserves_up_scenario_id,NULL +lf_reserves_down_scenario_id,NULL +regulation_up_scenario_id,NULL +regulation_down_scenario_id,NULL +frequency_response_scenario_id,NULL +spinning_reserves_scenario_id,NULL +inertia_reserves_scenario_id,NULL +period_energy_target_scenario_id,NULL +horizon_energy_target_scenario_id,NULL +instantaneous_penetration_scenario_id,NULL +transmission_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 +subsidy_scenario_id,NULL +policy_requirement_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 +market_volume_total_in_tmp_scenario_id,NULL +market_volume_total_in_prd_scenario_id,NULL +water_node_reservoir_scenario_id,2 +water_flow_scenario_id,6 +water_inflow_tmp_scenario_id,1 +water_inflow_bt_hrz_scenario_id,NULL +water_powerhouse_scenario_id,1 +tuning_scenario_id,NULL diff --git a/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/units.csv b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/units.csv new file mode 100644 index 0000000000..50a4433558 --- /dev/null +++ b/examples/hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold/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/hydro_system_exog_elev_w_bt_hrz_inflows/hydro_iteration_1/inputs/water_flow_tmp_bounds.tab b/examples/hydro_system_exog_elev_w_bt_hrz_inflows/hydro_iteration_1/inputs/water_flow_tmp_bounds.tab index 3918abcda8..3616e4f469 100644 --- a/examples/hydro_system_exog_elev_w_bt_hrz_inflows/hydro_iteration_1/inputs/water_flow_tmp_bounds.tab +++ b/examples/hydro_system_exog_elev_w_bt_hrz_inflows/hydro_iteration_1/inputs/water_flow_tmp_bounds.tab @@ -1,97 +1,97 @@ -water_link timepoint min_tmp_flow_vol_per_second max_tmp_flow_vol_per_second -Water_Link_12 1.0 0.002 0.02 -Water_Link_12 2.0 0.002 0.02 -Water_Link_12 3.0 0.002 0.02 -Water_Link_12 4.0 0.002 0.02 -Water_Link_12 5.0 0.002 0.02 -Water_Link_12 6.0 0.002 0.02 -Water_Link_12 7.0 0.002 0.02 -Water_Link_12 8.0 0.002 0.02 -Water_Link_12 9.0 0.002 0.02 -Water_Link_12 10.0 0.002 0.02 -Water_Link_12 11.0 0.002 0.02 -Water_Link_12 12.0 0.002 0.02 -Water_Link_12 13.0 0.002 0.02 -Water_Link_12 14.0 0.002 0.02 -Water_Link_12 15.0 0.002 0.02 -Water_Link_12 16.0 0.002 0.02 -Water_Link_12 17.0 0.002 0.02 -Water_Link_12 18.0 0.002 0.02 -Water_Link_12 19.0 0.002 0.02 -Water_Link_12 20.0 0.002 0.02 -Water_Link_12 21.0 0.002 0.02 -Water_Link_12 22.0 0.002 0.02 -Water_Link_12 23.0 0.002 0.02 -Water_Link_12 24.0 0.002 0.02 -Water_Link_23 1.0 0.002 0.02 -Water_Link_23 2.0 0.002 0.02 -Water_Link_23 3.0 0.002 0.02 -Water_Link_23 4.0 0.002 0.02 -Water_Link_23 5.0 0.002 0.02 -Water_Link_23 6.0 0.002 0.02 -Water_Link_23 7.0 0.002 0.02 -Water_Link_23 8.0 0.002 0.02 -Water_Link_23 9.0 0.002 0.02 -Water_Link_23 10.0 0.002 0.02 -Water_Link_23 11.0 0.002 0.02 -Water_Link_23 12.0 0.002 0.02 -Water_Link_23 13.0 0.002 0.02 -Water_Link_23 14.0 0.002 0.02 -Water_Link_23 15.0 0.002 0.02 -Water_Link_23 16.0 0.002 0.02 -Water_Link_23 17.0 0.002 0.02 -Water_Link_23 18.0 0.002 0.02 -Water_Link_23 19.0 0.002 0.02 -Water_Link_23 20.0 0.002 0.02 -Water_Link_23 21.0 0.002 0.02 -Water_Link_23 22.0 0.002 0.02 -Water_Link_23 23.0 0.002 0.02 -Water_Link_23 24.0 0.002 0.02 -Water_Link_34 1.0 0.002 0.02 -Water_Link_34 2.0 0.002 0.02 -Water_Link_34 3.0 0.002 0.02 -Water_Link_34 4.0 0.002 0.02 -Water_Link_34 5.0 0.002 0.02 -Water_Link_34 6.0 0.002 0.02 -Water_Link_34 7.0 0.002 0.02 -Water_Link_34 8.0 0.002 0.02 -Water_Link_34 9.0 0.002 0.02 -Water_Link_34 10.0 0.002 0.02 -Water_Link_34 11.0 0.002 0.02 -Water_Link_34 12.0 0.002 0.02 -Water_Link_34 13.0 0.002 0.02 -Water_Link_34 14.0 0.002 0.02 -Water_Link_34 15.0 0.002 0.02 -Water_Link_34 16.0 0.002 0.02 -Water_Link_34 17.0 0.002 0.02 -Water_Link_34 18.0 0.002 0.02 -Water_Link_34 19.0 0.002 0.02 -Water_Link_34 20.0 0.002 0.02 -Water_Link_34 21.0 0.002 0.02 -Water_Link_34 22.0 0.002 0.02 -Water_Link_34 23.0 0.002 0.02 -Water_Link_34 24.0 0.002 0.02 -Water_Link_45 1.0 0.002 0.02 -Water_Link_45 2.0 0.002 0.02 -Water_Link_45 3.0 0.002 0.02 -Water_Link_45 4.0 0.002 0.02 -Water_Link_45 5.0 0.002 0.02 -Water_Link_45 6.0 0.002 0.02 -Water_Link_45 7.0 0.002 0.02 -Water_Link_45 8.0 0.002 0.02 -Water_Link_45 9.0 0.002 0.02 -Water_Link_45 10.0 0.002 0.02 -Water_Link_45 11.0 0.002 0.02 -Water_Link_45 12.0 0.002 0.02 -Water_Link_45 13.0 0.002 0.02 -Water_Link_45 14.0 0.002 0.02 -Water_Link_45 15.0 0.002 0.02 -Water_Link_45 16.0 0.002 0.02 -Water_Link_45 17.0 0.002 0.02 -Water_Link_45 18.0 0.002 0.02 -Water_Link_45 19.0 0.002 0.02 -Water_Link_45 20.0 0.002 0.02 -Water_Link_45 21.0 0.002 0.02 -Water_Link_45 22.0 0.002 0.02 -Water_Link_45 23.0 0.002 0.02 -Water_Link_45 24.0 0.002 0.02 +water_link timepoint min_tmp_flow_vol_per_second max_tmp_flow_vol_per_second threshold_side_stream_vol_per_second +Water_Link_12 1.0 0.002 0.02 . +Water_Link_12 2.0 0.002 0.02 . +Water_Link_12 3.0 0.002 0.02 . +Water_Link_12 4.0 0.002 0.02 . +Water_Link_12 5.0 0.002 0.02 . +Water_Link_12 6.0 0.002 0.02 . +Water_Link_12 7.0 0.002 0.02 . +Water_Link_12 8.0 0.002 0.02 . +Water_Link_12 9.0 0.002 0.02 . +Water_Link_12 10.0 0.002 0.02 . +Water_Link_12 11.0 0.002 0.02 . +Water_Link_12 12.0 0.002 0.02 . +Water_Link_12 13.0 0.002 0.02 . +Water_Link_12 14.0 0.002 0.02 . +Water_Link_12 15.0 0.002 0.02 . +Water_Link_12 16.0 0.002 0.02 . +Water_Link_12 17.0 0.002 0.02 . +Water_Link_12 18.0 0.002 0.02 . +Water_Link_12 19.0 0.002 0.02 . +Water_Link_12 20.0 0.002 0.02 . +Water_Link_12 21.0 0.002 0.02 . +Water_Link_12 22.0 0.002 0.02 . +Water_Link_12 23.0 0.002 0.02 . +Water_Link_12 24.0 0.002 0.02 . +Water_Link_23 1.0 0.002 0.02 . +Water_Link_23 2.0 0.002 0.02 . +Water_Link_23 3.0 0.002 0.02 . +Water_Link_23 4.0 0.002 0.02 . +Water_Link_23 5.0 0.002 0.02 . +Water_Link_23 6.0 0.002 0.02 . +Water_Link_23 7.0 0.002 0.02 . +Water_Link_23 8.0 0.002 0.02 . +Water_Link_23 9.0 0.002 0.02 . +Water_Link_23 10.0 0.002 0.02 . +Water_Link_23 11.0 0.002 0.02 . +Water_Link_23 12.0 0.002 0.02 . +Water_Link_23 13.0 0.002 0.02 . +Water_Link_23 14.0 0.002 0.02 . +Water_Link_23 15.0 0.002 0.02 . +Water_Link_23 16.0 0.002 0.02 . +Water_Link_23 17.0 0.002 0.02 . +Water_Link_23 18.0 0.002 0.02 . +Water_Link_23 19.0 0.002 0.02 . +Water_Link_23 20.0 0.002 0.02 . +Water_Link_23 21.0 0.002 0.02 . +Water_Link_23 22.0 0.002 0.02 . +Water_Link_23 23.0 0.002 0.02 . +Water_Link_23 24.0 0.002 0.02 . +Water_Link_34 1.0 0.002 0.02 . +Water_Link_34 2.0 0.002 0.02 . +Water_Link_34 3.0 0.002 0.02 . +Water_Link_34 4.0 0.002 0.02 . +Water_Link_34 5.0 0.002 0.02 . +Water_Link_34 6.0 0.002 0.02 . +Water_Link_34 7.0 0.002 0.02 . +Water_Link_34 8.0 0.002 0.02 . +Water_Link_34 9.0 0.002 0.02 . +Water_Link_34 10.0 0.002 0.02 . +Water_Link_34 11.0 0.002 0.02 . +Water_Link_34 12.0 0.002 0.02 . +Water_Link_34 13.0 0.002 0.02 . +Water_Link_34 14.0 0.002 0.02 . +Water_Link_34 15.0 0.002 0.02 . +Water_Link_34 16.0 0.002 0.02 . +Water_Link_34 17.0 0.002 0.02 . +Water_Link_34 18.0 0.002 0.02 . +Water_Link_34 19.0 0.002 0.02 . +Water_Link_34 20.0 0.002 0.02 . +Water_Link_34 21.0 0.002 0.02 . +Water_Link_34 22.0 0.002 0.02 . +Water_Link_34 23.0 0.002 0.02 . +Water_Link_34 24.0 0.002 0.02 . +Water_Link_45 1.0 0.002 0.02 . +Water_Link_45 2.0 0.002 0.02 . +Water_Link_45 3.0 0.002 0.02 . +Water_Link_45 4.0 0.002 0.02 . +Water_Link_45 5.0 0.002 0.02 . +Water_Link_45 6.0 0.002 0.02 . +Water_Link_45 7.0 0.002 0.02 . +Water_Link_45 8.0 0.002 0.02 . +Water_Link_45 9.0 0.002 0.02 . +Water_Link_45 10.0 0.002 0.02 . +Water_Link_45 11.0 0.002 0.02 . +Water_Link_45 12.0 0.002 0.02 . +Water_Link_45 13.0 0.002 0.02 . +Water_Link_45 14.0 0.002 0.02 . +Water_Link_45 15.0 0.002 0.02 . +Water_Link_45 16.0 0.002 0.02 . +Water_Link_45 17.0 0.002 0.02 . +Water_Link_45 18.0 0.002 0.02 . +Water_Link_45 19.0 0.002 0.02 . +Water_Link_45 20.0 0.002 0.02 . +Water_Link_45 21.0 0.002 0.02 . +Water_Link_45 22.0 0.002 0.02 . +Water_Link_45 23.0 0.002 0.02 . +Water_Link_45 24.0 0.002 0.02 . diff --git a/examples/hydro_system_exog_elev_w_flow_and_volume_violations/hydro_iteration_1/inputs/water_flow_tmp_bounds.tab b/examples/hydro_system_exog_elev_w_flow_and_volume_violations/hydro_iteration_1/inputs/water_flow_tmp_bounds.tab index 3918abcda8..3616e4f469 100644 --- a/examples/hydro_system_exog_elev_w_flow_and_volume_violations/hydro_iteration_1/inputs/water_flow_tmp_bounds.tab +++ b/examples/hydro_system_exog_elev_w_flow_and_volume_violations/hydro_iteration_1/inputs/water_flow_tmp_bounds.tab @@ -1,97 +1,97 @@ -water_link timepoint min_tmp_flow_vol_per_second max_tmp_flow_vol_per_second -Water_Link_12 1.0 0.002 0.02 -Water_Link_12 2.0 0.002 0.02 -Water_Link_12 3.0 0.002 0.02 -Water_Link_12 4.0 0.002 0.02 -Water_Link_12 5.0 0.002 0.02 -Water_Link_12 6.0 0.002 0.02 -Water_Link_12 7.0 0.002 0.02 -Water_Link_12 8.0 0.002 0.02 -Water_Link_12 9.0 0.002 0.02 -Water_Link_12 10.0 0.002 0.02 -Water_Link_12 11.0 0.002 0.02 -Water_Link_12 12.0 0.002 0.02 -Water_Link_12 13.0 0.002 0.02 -Water_Link_12 14.0 0.002 0.02 -Water_Link_12 15.0 0.002 0.02 -Water_Link_12 16.0 0.002 0.02 -Water_Link_12 17.0 0.002 0.02 -Water_Link_12 18.0 0.002 0.02 -Water_Link_12 19.0 0.002 0.02 -Water_Link_12 20.0 0.002 0.02 -Water_Link_12 21.0 0.002 0.02 -Water_Link_12 22.0 0.002 0.02 -Water_Link_12 23.0 0.002 0.02 -Water_Link_12 24.0 0.002 0.02 -Water_Link_23 1.0 0.002 0.02 -Water_Link_23 2.0 0.002 0.02 -Water_Link_23 3.0 0.002 0.02 -Water_Link_23 4.0 0.002 0.02 -Water_Link_23 5.0 0.002 0.02 -Water_Link_23 6.0 0.002 0.02 -Water_Link_23 7.0 0.002 0.02 -Water_Link_23 8.0 0.002 0.02 -Water_Link_23 9.0 0.002 0.02 -Water_Link_23 10.0 0.002 0.02 -Water_Link_23 11.0 0.002 0.02 -Water_Link_23 12.0 0.002 0.02 -Water_Link_23 13.0 0.002 0.02 -Water_Link_23 14.0 0.002 0.02 -Water_Link_23 15.0 0.002 0.02 -Water_Link_23 16.0 0.002 0.02 -Water_Link_23 17.0 0.002 0.02 -Water_Link_23 18.0 0.002 0.02 -Water_Link_23 19.0 0.002 0.02 -Water_Link_23 20.0 0.002 0.02 -Water_Link_23 21.0 0.002 0.02 -Water_Link_23 22.0 0.002 0.02 -Water_Link_23 23.0 0.002 0.02 -Water_Link_23 24.0 0.002 0.02 -Water_Link_34 1.0 0.002 0.02 -Water_Link_34 2.0 0.002 0.02 -Water_Link_34 3.0 0.002 0.02 -Water_Link_34 4.0 0.002 0.02 -Water_Link_34 5.0 0.002 0.02 -Water_Link_34 6.0 0.002 0.02 -Water_Link_34 7.0 0.002 0.02 -Water_Link_34 8.0 0.002 0.02 -Water_Link_34 9.0 0.002 0.02 -Water_Link_34 10.0 0.002 0.02 -Water_Link_34 11.0 0.002 0.02 -Water_Link_34 12.0 0.002 0.02 -Water_Link_34 13.0 0.002 0.02 -Water_Link_34 14.0 0.002 0.02 -Water_Link_34 15.0 0.002 0.02 -Water_Link_34 16.0 0.002 0.02 -Water_Link_34 17.0 0.002 0.02 -Water_Link_34 18.0 0.002 0.02 -Water_Link_34 19.0 0.002 0.02 -Water_Link_34 20.0 0.002 0.02 -Water_Link_34 21.0 0.002 0.02 -Water_Link_34 22.0 0.002 0.02 -Water_Link_34 23.0 0.002 0.02 -Water_Link_34 24.0 0.002 0.02 -Water_Link_45 1.0 0.002 0.02 -Water_Link_45 2.0 0.002 0.02 -Water_Link_45 3.0 0.002 0.02 -Water_Link_45 4.0 0.002 0.02 -Water_Link_45 5.0 0.002 0.02 -Water_Link_45 6.0 0.002 0.02 -Water_Link_45 7.0 0.002 0.02 -Water_Link_45 8.0 0.002 0.02 -Water_Link_45 9.0 0.002 0.02 -Water_Link_45 10.0 0.002 0.02 -Water_Link_45 11.0 0.002 0.02 -Water_Link_45 12.0 0.002 0.02 -Water_Link_45 13.0 0.002 0.02 -Water_Link_45 14.0 0.002 0.02 -Water_Link_45 15.0 0.002 0.02 -Water_Link_45 16.0 0.002 0.02 -Water_Link_45 17.0 0.002 0.02 -Water_Link_45 18.0 0.002 0.02 -Water_Link_45 19.0 0.002 0.02 -Water_Link_45 20.0 0.002 0.02 -Water_Link_45 21.0 0.002 0.02 -Water_Link_45 22.0 0.002 0.02 -Water_Link_45 23.0 0.002 0.02 -Water_Link_45 24.0 0.002 0.02 +water_link timepoint min_tmp_flow_vol_per_second max_tmp_flow_vol_per_second threshold_side_stream_vol_per_second +Water_Link_12 1.0 0.002 0.02 . +Water_Link_12 2.0 0.002 0.02 . +Water_Link_12 3.0 0.002 0.02 . +Water_Link_12 4.0 0.002 0.02 . +Water_Link_12 5.0 0.002 0.02 . +Water_Link_12 6.0 0.002 0.02 . +Water_Link_12 7.0 0.002 0.02 . +Water_Link_12 8.0 0.002 0.02 . +Water_Link_12 9.0 0.002 0.02 . +Water_Link_12 10.0 0.002 0.02 . +Water_Link_12 11.0 0.002 0.02 . +Water_Link_12 12.0 0.002 0.02 . +Water_Link_12 13.0 0.002 0.02 . +Water_Link_12 14.0 0.002 0.02 . +Water_Link_12 15.0 0.002 0.02 . +Water_Link_12 16.0 0.002 0.02 . +Water_Link_12 17.0 0.002 0.02 . +Water_Link_12 18.0 0.002 0.02 . +Water_Link_12 19.0 0.002 0.02 . +Water_Link_12 20.0 0.002 0.02 . +Water_Link_12 21.0 0.002 0.02 . +Water_Link_12 22.0 0.002 0.02 . +Water_Link_12 23.0 0.002 0.02 . +Water_Link_12 24.0 0.002 0.02 . +Water_Link_23 1.0 0.002 0.02 . +Water_Link_23 2.0 0.002 0.02 . +Water_Link_23 3.0 0.002 0.02 . +Water_Link_23 4.0 0.002 0.02 . +Water_Link_23 5.0 0.002 0.02 . +Water_Link_23 6.0 0.002 0.02 . +Water_Link_23 7.0 0.002 0.02 . +Water_Link_23 8.0 0.002 0.02 . +Water_Link_23 9.0 0.002 0.02 . +Water_Link_23 10.0 0.002 0.02 . +Water_Link_23 11.0 0.002 0.02 . +Water_Link_23 12.0 0.002 0.02 . +Water_Link_23 13.0 0.002 0.02 . +Water_Link_23 14.0 0.002 0.02 . +Water_Link_23 15.0 0.002 0.02 . +Water_Link_23 16.0 0.002 0.02 . +Water_Link_23 17.0 0.002 0.02 . +Water_Link_23 18.0 0.002 0.02 . +Water_Link_23 19.0 0.002 0.02 . +Water_Link_23 20.0 0.002 0.02 . +Water_Link_23 21.0 0.002 0.02 . +Water_Link_23 22.0 0.002 0.02 . +Water_Link_23 23.0 0.002 0.02 . +Water_Link_23 24.0 0.002 0.02 . +Water_Link_34 1.0 0.002 0.02 . +Water_Link_34 2.0 0.002 0.02 . +Water_Link_34 3.0 0.002 0.02 . +Water_Link_34 4.0 0.002 0.02 . +Water_Link_34 5.0 0.002 0.02 . +Water_Link_34 6.0 0.002 0.02 . +Water_Link_34 7.0 0.002 0.02 . +Water_Link_34 8.0 0.002 0.02 . +Water_Link_34 9.0 0.002 0.02 . +Water_Link_34 10.0 0.002 0.02 . +Water_Link_34 11.0 0.002 0.02 . +Water_Link_34 12.0 0.002 0.02 . +Water_Link_34 13.0 0.002 0.02 . +Water_Link_34 14.0 0.002 0.02 . +Water_Link_34 15.0 0.002 0.02 . +Water_Link_34 16.0 0.002 0.02 . +Water_Link_34 17.0 0.002 0.02 . +Water_Link_34 18.0 0.002 0.02 . +Water_Link_34 19.0 0.002 0.02 . +Water_Link_34 20.0 0.002 0.02 . +Water_Link_34 21.0 0.002 0.02 . +Water_Link_34 22.0 0.002 0.02 . +Water_Link_34 23.0 0.002 0.02 . +Water_Link_34 24.0 0.002 0.02 . +Water_Link_45 1.0 0.002 0.02 . +Water_Link_45 2.0 0.002 0.02 . +Water_Link_45 3.0 0.002 0.02 . +Water_Link_45 4.0 0.002 0.02 . +Water_Link_45 5.0 0.002 0.02 . +Water_Link_45 6.0 0.002 0.02 . +Water_Link_45 7.0 0.002 0.02 . +Water_Link_45 8.0 0.002 0.02 . +Water_Link_45 9.0 0.002 0.02 . +Water_Link_45 10.0 0.002 0.02 . +Water_Link_45 11.0 0.002 0.02 . +Water_Link_45 12.0 0.002 0.02 . +Water_Link_45 13.0 0.002 0.02 . +Water_Link_45 14.0 0.002 0.02 . +Water_Link_45 15.0 0.002 0.02 . +Water_Link_45 16.0 0.002 0.02 . +Water_Link_45 17.0 0.002 0.02 . +Water_Link_45 18.0 0.002 0.02 . +Water_Link_45 19.0 0.002 0.02 . +Water_Link_45 20.0 0.002 0.02 . +Water_Link_45 21.0 0.002 0.02 . +Water_Link_45 22.0 0.002 0.02 . +Water_Link_45 23.0 0.002 0.02 . +Water_Link_45 24.0 0.002 0.02 . diff --git a/examples/hydro_system_exog_elev_w_gen_ramp_limits/hydro_iteration_1/inputs/water_flow_tmp_bounds.tab b/examples/hydro_system_exog_elev_w_gen_ramp_limits/hydro_iteration_1/inputs/water_flow_tmp_bounds.tab index 3918abcda8..3616e4f469 100644 --- a/examples/hydro_system_exog_elev_w_gen_ramp_limits/hydro_iteration_1/inputs/water_flow_tmp_bounds.tab +++ b/examples/hydro_system_exog_elev_w_gen_ramp_limits/hydro_iteration_1/inputs/water_flow_tmp_bounds.tab @@ -1,97 +1,97 @@ -water_link timepoint min_tmp_flow_vol_per_second max_tmp_flow_vol_per_second -Water_Link_12 1.0 0.002 0.02 -Water_Link_12 2.0 0.002 0.02 -Water_Link_12 3.0 0.002 0.02 -Water_Link_12 4.0 0.002 0.02 -Water_Link_12 5.0 0.002 0.02 -Water_Link_12 6.0 0.002 0.02 -Water_Link_12 7.0 0.002 0.02 -Water_Link_12 8.0 0.002 0.02 -Water_Link_12 9.0 0.002 0.02 -Water_Link_12 10.0 0.002 0.02 -Water_Link_12 11.0 0.002 0.02 -Water_Link_12 12.0 0.002 0.02 -Water_Link_12 13.0 0.002 0.02 -Water_Link_12 14.0 0.002 0.02 -Water_Link_12 15.0 0.002 0.02 -Water_Link_12 16.0 0.002 0.02 -Water_Link_12 17.0 0.002 0.02 -Water_Link_12 18.0 0.002 0.02 -Water_Link_12 19.0 0.002 0.02 -Water_Link_12 20.0 0.002 0.02 -Water_Link_12 21.0 0.002 0.02 -Water_Link_12 22.0 0.002 0.02 -Water_Link_12 23.0 0.002 0.02 -Water_Link_12 24.0 0.002 0.02 -Water_Link_23 1.0 0.002 0.02 -Water_Link_23 2.0 0.002 0.02 -Water_Link_23 3.0 0.002 0.02 -Water_Link_23 4.0 0.002 0.02 -Water_Link_23 5.0 0.002 0.02 -Water_Link_23 6.0 0.002 0.02 -Water_Link_23 7.0 0.002 0.02 -Water_Link_23 8.0 0.002 0.02 -Water_Link_23 9.0 0.002 0.02 -Water_Link_23 10.0 0.002 0.02 -Water_Link_23 11.0 0.002 0.02 -Water_Link_23 12.0 0.002 0.02 -Water_Link_23 13.0 0.002 0.02 -Water_Link_23 14.0 0.002 0.02 -Water_Link_23 15.0 0.002 0.02 -Water_Link_23 16.0 0.002 0.02 -Water_Link_23 17.0 0.002 0.02 -Water_Link_23 18.0 0.002 0.02 -Water_Link_23 19.0 0.002 0.02 -Water_Link_23 20.0 0.002 0.02 -Water_Link_23 21.0 0.002 0.02 -Water_Link_23 22.0 0.002 0.02 -Water_Link_23 23.0 0.002 0.02 -Water_Link_23 24.0 0.002 0.02 -Water_Link_34 1.0 0.002 0.02 -Water_Link_34 2.0 0.002 0.02 -Water_Link_34 3.0 0.002 0.02 -Water_Link_34 4.0 0.002 0.02 -Water_Link_34 5.0 0.002 0.02 -Water_Link_34 6.0 0.002 0.02 -Water_Link_34 7.0 0.002 0.02 -Water_Link_34 8.0 0.002 0.02 -Water_Link_34 9.0 0.002 0.02 -Water_Link_34 10.0 0.002 0.02 -Water_Link_34 11.0 0.002 0.02 -Water_Link_34 12.0 0.002 0.02 -Water_Link_34 13.0 0.002 0.02 -Water_Link_34 14.0 0.002 0.02 -Water_Link_34 15.0 0.002 0.02 -Water_Link_34 16.0 0.002 0.02 -Water_Link_34 17.0 0.002 0.02 -Water_Link_34 18.0 0.002 0.02 -Water_Link_34 19.0 0.002 0.02 -Water_Link_34 20.0 0.002 0.02 -Water_Link_34 21.0 0.002 0.02 -Water_Link_34 22.0 0.002 0.02 -Water_Link_34 23.0 0.002 0.02 -Water_Link_34 24.0 0.002 0.02 -Water_Link_45 1.0 0.002 0.02 -Water_Link_45 2.0 0.002 0.02 -Water_Link_45 3.0 0.002 0.02 -Water_Link_45 4.0 0.002 0.02 -Water_Link_45 5.0 0.002 0.02 -Water_Link_45 6.0 0.002 0.02 -Water_Link_45 7.0 0.002 0.02 -Water_Link_45 8.0 0.002 0.02 -Water_Link_45 9.0 0.002 0.02 -Water_Link_45 10.0 0.002 0.02 -Water_Link_45 11.0 0.002 0.02 -Water_Link_45 12.0 0.002 0.02 -Water_Link_45 13.0 0.002 0.02 -Water_Link_45 14.0 0.002 0.02 -Water_Link_45 15.0 0.002 0.02 -Water_Link_45 16.0 0.002 0.02 -Water_Link_45 17.0 0.002 0.02 -Water_Link_45 18.0 0.002 0.02 -Water_Link_45 19.0 0.002 0.02 -Water_Link_45 20.0 0.002 0.02 -Water_Link_45 21.0 0.002 0.02 -Water_Link_45 22.0 0.002 0.02 -Water_Link_45 23.0 0.002 0.02 -Water_Link_45 24.0 0.002 0.02 +water_link timepoint min_tmp_flow_vol_per_second max_tmp_flow_vol_per_second threshold_side_stream_vol_per_second +Water_Link_12 1.0 0.002 0.02 . +Water_Link_12 2.0 0.002 0.02 . +Water_Link_12 3.0 0.002 0.02 . +Water_Link_12 4.0 0.002 0.02 . +Water_Link_12 5.0 0.002 0.02 . +Water_Link_12 6.0 0.002 0.02 . +Water_Link_12 7.0 0.002 0.02 . +Water_Link_12 8.0 0.002 0.02 . +Water_Link_12 9.0 0.002 0.02 . +Water_Link_12 10.0 0.002 0.02 . +Water_Link_12 11.0 0.002 0.02 . +Water_Link_12 12.0 0.002 0.02 . +Water_Link_12 13.0 0.002 0.02 . +Water_Link_12 14.0 0.002 0.02 . +Water_Link_12 15.0 0.002 0.02 . +Water_Link_12 16.0 0.002 0.02 . +Water_Link_12 17.0 0.002 0.02 . +Water_Link_12 18.0 0.002 0.02 . +Water_Link_12 19.0 0.002 0.02 . +Water_Link_12 20.0 0.002 0.02 . +Water_Link_12 21.0 0.002 0.02 . +Water_Link_12 22.0 0.002 0.02 . +Water_Link_12 23.0 0.002 0.02 . +Water_Link_12 24.0 0.002 0.02 . +Water_Link_23 1.0 0.002 0.02 . +Water_Link_23 2.0 0.002 0.02 . +Water_Link_23 3.0 0.002 0.02 . +Water_Link_23 4.0 0.002 0.02 . +Water_Link_23 5.0 0.002 0.02 . +Water_Link_23 6.0 0.002 0.02 . +Water_Link_23 7.0 0.002 0.02 . +Water_Link_23 8.0 0.002 0.02 . +Water_Link_23 9.0 0.002 0.02 . +Water_Link_23 10.0 0.002 0.02 . +Water_Link_23 11.0 0.002 0.02 . +Water_Link_23 12.0 0.002 0.02 . +Water_Link_23 13.0 0.002 0.02 . +Water_Link_23 14.0 0.002 0.02 . +Water_Link_23 15.0 0.002 0.02 . +Water_Link_23 16.0 0.002 0.02 . +Water_Link_23 17.0 0.002 0.02 . +Water_Link_23 18.0 0.002 0.02 . +Water_Link_23 19.0 0.002 0.02 . +Water_Link_23 20.0 0.002 0.02 . +Water_Link_23 21.0 0.002 0.02 . +Water_Link_23 22.0 0.002 0.02 . +Water_Link_23 23.0 0.002 0.02 . +Water_Link_23 24.0 0.002 0.02 . +Water_Link_34 1.0 0.002 0.02 . +Water_Link_34 2.0 0.002 0.02 . +Water_Link_34 3.0 0.002 0.02 . +Water_Link_34 4.0 0.002 0.02 . +Water_Link_34 5.0 0.002 0.02 . +Water_Link_34 6.0 0.002 0.02 . +Water_Link_34 7.0 0.002 0.02 . +Water_Link_34 8.0 0.002 0.02 . +Water_Link_34 9.0 0.002 0.02 . +Water_Link_34 10.0 0.002 0.02 . +Water_Link_34 11.0 0.002 0.02 . +Water_Link_34 12.0 0.002 0.02 . +Water_Link_34 13.0 0.002 0.02 . +Water_Link_34 14.0 0.002 0.02 . +Water_Link_34 15.0 0.002 0.02 . +Water_Link_34 16.0 0.002 0.02 . +Water_Link_34 17.0 0.002 0.02 . +Water_Link_34 18.0 0.002 0.02 . +Water_Link_34 19.0 0.002 0.02 . +Water_Link_34 20.0 0.002 0.02 . +Water_Link_34 21.0 0.002 0.02 . +Water_Link_34 22.0 0.002 0.02 . +Water_Link_34 23.0 0.002 0.02 . +Water_Link_34 24.0 0.002 0.02 . +Water_Link_45 1.0 0.002 0.02 . +Water_Link_45 2.0 0.002 0.02 . +Water_Link_45 3.0 0.002 0.02 . +Water_Link_45 4.0 0.002 0.02 . +Water_Link_45 5.0 0.002 0.02 . +Water_Link_45 6.0 0.002 0.02 . +Water_Link_45 7.0 0.002 0.02 . +Water_Link_45 8.0 0.002 0.02 . +Water_Link_45 9.0 0.002 0.02 . +Water_Link_45 10.0 0.002 0.02 . +Water_Link_45 11.0 0.002 0.02 . +Water_Link_45 12.0 0.002 0.02 . +Water_Link_45 13.0 0.002 0.02 . +Water_Link_45 14.0 0.002 0.02 . +Water_Link_45 15.0 0.002 0.02 . +Water_Link_45 16.0 0.002 0.02 . +Water_Link_45 17.0 0.002 0.02 . +Water_Link_45 18.0 0.002 0.02 . +Water_Link_45 19.0 0.002 0.02 . +Water_Link_45 20.0 0.002 0.02 . +Water_Link_45 21.0 0.002 0.02 . +Water_Link_45 22.0 0.002 0.02 . +Water_Link_45 23.0 0.002 0.02 . +Water_Link_45 24.0 0.002 0.02 . diff --git a/examples/hydro_system_exog_elev_w_hrz_only_inflows/hydro_iteration_1/inputs/water_flow_tmp_bounds.tab b/examples/hydro_system_exog_elev_w_hrz_only_inflows/hydro_iteration_1/inputs/water_flow_tmp_bounds.tab index 3918abcda8..3616e4f469 100644 --- a/examples/hydro_system_exog_elev_w_hrz_only_inflows/hydro_iteration_1/inputs/water_flow_tmp_bounds.tab +++ b/examples/hydro_system_exog_elev_w_hrz_only_inflows/hydro_iteration_1/inputs/water_flow_tmp_bounds.tab @@ -1,97 +1,97 @@ -water_link timepoint min_tmp_flow_vol_per_second max_tmp_flow_vol_per_second -Water_Link_12 1.0 0.002 0.02 -Water_Link_12 2.0 0.002 0.02 -Water_Link_12 3.0 0.002 0.02 -Water_Link_12 4.0 0.002 0.02 -Water_Link_12 5.0 0.002 0.02 -Water_Link_12 6.0 0.002 0.02 -Water_Link_12 7.0 0.002 0.02 -Water_Link_12 8.0 0.002 0.02 -Water_Link_12 9.0 0.002 0.02 -Water_Link_12 10.0 0.002 0.02 -Water_Link_12 11.0 0.002 0.02 -Water_Link_12 12.0 0.002 0.02 -Water_Link_12 13.0 0.002 0.02 -Water_Link_12 14.0 0.002 0.02 -Water_Link_12 15.0 0.002 0.02 -Water_Link_12 16.0 0.002 0.02 -Water_Link_12 17.0 0.002 0.02 -Water_Link_12 18.0 0.002 0.02 -Water_Link_12 19.0 0.002 0.02 -Water_Link_12 20.0 0.002 0.02 -Water_Link_12 21.0 0.002 0.02 -Water_Link_12 22.0 0.002 0.02 -Water_Link_12 23.0 0.002 0.02 -Water_Link_12 24.0 0.002 0.02 -Water_Link_23 1.0 0.002 0.02 -Water_Link_23 2.0 0.002 0.02 -Water_Link_23 3.0 0.002 0.02 -Water_Link_23 4.0 0.002 0.02 -Water_Link_23 5.0 0.002 0.02 -Water_Link_23 6.0 0.002 0.02 -Water_Link_23 7.0 0.002 0.02 -Water_Link_23 8.0 0.002 0.02 -Water_Link_23 9.0 0.002 0.02 -Water_Link_23 10.0 0.002 0.02 -Water_Link_23 11.0 0.002 0.02 -Water_Link_23 12.0 0.002 0.02 -Water_Link_23 13.0 0.002 0.02 -Water_Link_23 14.0 0.002 0.02 -Water_Link_23 15.0 0.002 0.02 -Water_Link_23 16.0 0.002 0.02 -Water_Link_23 17.0 0.002 0.02 -Water_Link_23 18.0 0.002 0.02 -Water_Link_23 19.0 0.002 0.02 -Water_Link_23 20.0 0.002 0.02 -Water_Link_23 21.0 0.002 0.02 -Water_Link_23 22.0 0.002 0.02 -Water_Link_23 23.0 0.002 0.02 -Water_Link_23 24.0 0.002 0.02 -Water_Link_34 1.0 0.002 0.02 -Water_Link_34 2.0 0.002 0.02 -Water_Link_34 3.0 0.002 0.02 -Water_Link_34 4.0 0.002 0.02 -Water_Link_34 5.0 0.002 0.02 -Water_Link_34 6.0 0.002 0.02 -Water_Link_34 7.0 0.002 0.02 -Water_Link_34 8.0 0.002 0.02 -Water_Link_34 9.0 0.002 0.02 -Water_Link_34 10.0 0.002 0.02 -Water_Link_34 11.0 0.002 0.02 -Water_Link_34 12.0 0.002 0.02 -Water_Link_34 13.0 0.002 0.02 -Water_Link_34 14.0 0.002 0.02 -Water_Link_34 15.0 0.002 0.02 -Water_Link_34 16.0 0.002 0.02 -Water_Link_34 17.0 0.002 0.02 -Water_Link_34 18.0 0.002 0.02 -Water_Link_34 19.0 0.002 0.02 -Water_Link_34 20.0 0.002 0.02 -Water_Link_34 21.0 0.002 0.02 -Water_Link_34 22.0 0.002 0.02 -Water_Link_34 23.0 0.002 0.02 -Water_Link_34 24.0 0.002 0.02 -Water_Link_45 1.0 0.002 0.02 -Water_Link_45 2.0 0.002 0.02 -Water_Link_45 3.0 0.002 0.02 -Water_Link_45 4.0 0.002 0.02 -Water_Link_45 5.0 0.002 0.02 -Water_Link_45 6.0 0.002 0.02 -Water_Link_45 7.0 0.002 0.02 -Water_Link_45 8.0 0.002 0.02 -Water_Link_45 9.0 0.002 0.02 -Water_Link_45 10.0 0.002 0.02 -Water_Link_45 11.0 0.002 0.02 -Water_Link_45 12.0 0.002 0.02 -Water_Link_45 13.0 0.002 0.02 -Water_Link_45 14.0 0.002 0.02 -Water_Link_45 15.0 0.002 0.02 -Water_Link_45 16.0 0.002 0.02 -Water_Link_45 17.0 0.002 0.02 -Water_Link_45 18.0 0.002 0.02 -Water_Link_45 19.0 0.002 0.02 -Water_Link_45 20.0 0.002 0.02 -Water_Link_45 21.0 0.002 0.02 -Water_Link_45 22.0 0.002 0.02 -Water_Link_45 23.0 0.002 0.02 -Water_Link_45 24.0 0.002 0.02 +water_link timepoint min_tmp_flow_vol_per_second max_tmp_flow_vol_per_second threshold_side_stream_vol_per_second +Water_Link_12 1.0 0.002 0.02 . +Water_Link_12 2.0 0.002 0.02 . +Water_Link_12 3.0 0.002 0.02 . +Water_Link_12 4.0 0.002 0.02 . +Water_Link_12 5.0 0.002 0.02 . +Water_Link_12 6.0 0.002 0.02 . +Water_Link_12 7.0 0.002 0.02 . +Water_Link_12 8.0 0.002 0.02 . +Water_Link_12 9.0 0.002 0.02 . +Water_Link_12 10.0 0.002 0.02 . +Water_Link_12 11.0 0.002 0.02 . +Water_Link_12 12.0 0.002 0.02 . +Water_Link_12 13.0 0.002 0.02 . +Water_Link_12 14.0 0.002 0.02 . +Water_Link_12 15.0 0.002 0.02 . +Water_Link_12 16.0 0.002 0.02 . +Water_Link_12 17.0 0.002 0.02 . +Water_Link_12 18.0 0.002 0.02 . +Water_Link_12 19.0 0.002 0.02 . +Water_Link_12 20.0 0.002 0.02 . +Water_Link_12 21.0 0.002 0.02 . +Water_Link_12 22.0 0.002 0.02 . +Water_Link_12 23.0 0.002 0.02 . +Water_Link_12 24.0 0.002 0.02 . +Water_Link_23 1.0 0.002 0.02 . +Water_Link_23 2.0 0.002 0.02 . +Water_Link_23 3.0 0.002 0.02 . +Water_Link_23 4.0 0.002 0.02 . +Water_Link_23 5.0 0.002 0.02 . +Water_Link_23 6.0 0.002 0.02 . +Water_Link_23 7.0 0.002 0.02 . +Water_Link_23 8.0 0.002 0.02 . +Water_Link_23 9.0 0.002 0.02 . +Water_Link_23 10.0 0.002 0.02 . +Water_Link_23 11.0 0.002 0.02 . +Water_Link_23 12.0 0.002 0.02 . +Water_Link_23 13.0 0.002 0.02 . +Water_Link_23 14.0 0.002 0.02 . +Water_Link_23 15.0 0.002 0.02 . +Water_Link_23 16.0 0.002 0.02 . +Water_Link_23 17.0 0.002 0.02 . +Water_Link_23 18.0 0.002 0.02 . +Water_Link_23 19.0 0.002 0.02 . +Water_Link_23 20.0 0.002 0.02 . +Water_Link_23 21.0 0.002 0.02 . +Water_Link_23 22.0 0.002 0.02 . +Water_Link_23 23.0 0.002 0.02 . +Water_Link_23 24.0 0.002 0.02 . +Water_Link_34 1.0 0.002 0.02 . +Water_Link_34 2.0 0.002 0.02 . +Water_Link_34 3.0 0.002 0.02 . +Water_Link_34 4.0 0.002 0.02 . +Water_Link_34 5.0 0.002 0.02 . +Water_Link_34 6.0 0.002 0.02 . +Water_Link_34 7.0 0.002 0.02 . +Water_Link_34 8.0 0.002 0.02 . +Water_Link_34 9.0 0.002 0.02 . +Water_Link_34 10.0 0.002 0.02 . +Water_Link_34 11.0 0.002 0.02 . +Water_Link_34 12.0 0.002 0.02 . +Water_Link_34 13.0 0.002 0.02 . +Water_Link_34 14.0 0.002 0.02 . +Water_Link_34 15.0 0.002 0.02 . +Water_Link_34 16.0 0.002 0.02 . +Water_Link_34 17.0 0.002 0.02 . +Water_Link_34 18.0 0.002 0.02 . +Water_Link_34 19.0 0.002 0.02 . +Water_Link_34 20.0 0.002 0.02 . +Water_Link_34 21.0 0.002 0.02 . +Water_Link_34 22.0 0.002 0.02 . +Water_Link_34 23.0 0.002 0.02 . +Water_Link_34 24.0 0.002 0.02 . +Water_Link_45 1.0 0.002 0.02 . +Water_Link_45 2.0 0.002 0.02 . +Water_Link_45 3.0 0.002 0.02 . +Water_Link_45 4.0 0.002 0.02 . +Water_Link_45 5.0 0.002 0.02 . +Water_Link_45 6.0 0.002 0.02 . +Water_Link_45 7.0 0.002 0.02 . +Water_Link_45 8.0 0.002 0.02 . +Water_Link_45 9.0 0.002 0.02 . +Water_Link_45 10.0 0.002 0.02 . +Water_Link_45 11.0 0.002 0.02 . +Water_Link_45 12.0 0.002 0.02 . +Water_Link_45 13.0 0.002 0.02 . +Water_Link_45 14.0 0.002 0.02 . +Water_Link_45 15.0 0.002 0.02 . +Water_Link_45 16.0 0.002 0.02 . +Water_Link_45 17.0 0.002 0.02 . +Water_Link_45 18.0 0.002 0.02 . +Water_Link_45 19.0 0.002 0.02 . +Water_Link_45 20.0 0.002 0.02 . +Water_Link_45 21.0 0.002 0.02 . +Water_Link_45 22.0 0.002 0.02 . +Water_Link_45 23.0 0.002 0.02 . +Water_Link_45 24.0 0.002 0.02 . diff --git a/examples/hydro_system_exog_elev_w_travel_time/hydro_iteration_1/inputs/water_flow_tmp_bounds.tab b/examples/hydro_system_exog_elev_w_travel_time/hydro_iteration_1/inputs/water_flow_tmp_bounds.tab index 3918abcda8..3616e4f469 100644 --- a/examples/hydro_system_exog_elev_w_travel_time/hydro_iteration_1/inputs/water_flow_tmp_bounds.tab +++ b/examples/hydro_system_exog_elev_w_travel_time/hydro_iteration_1/inputs/water_flow_tmp_bounds.tab @@ -1,97 +1,97 @@ -water_link timepoint min_tmp_flow_vol_per_second max_tmp_flow_vol_per_second -Water_Link_12 1.0 0.002 0.02 -Water_Link_12 2.0 0.002 0.02 -Water_Link_12 3.0 0.002 0.02 -Water_Link_12 4.0 0.002 0.02 -Water_Link_12 5.0 0.002 0.02 -Water_Link_12 6.0 0.002 0.02 -Water_Link_12 7.0 0.002 0.02 -Water_Link_12 8.0 0.002 0.02 -Water_Link_12 9.0 0.002 0.02 -Water_Link_12 10.0 0.002 0.02 -Water_Link_12 11.0 0.002 0.02 -Water_Link_12 12.0 0.002 0.02 -Water_Link_12 13.0 0.002 0.02 -Water_Link_12 14.0 0.002 0.02 -Water_Link_12 15.0 0.002 0.02 -Water_Link_12 16.0 0.002 0.02 -Water_Link_12 17.0 0.002 0.02 -Water_Link_12 18.0 0.002 0.02 -Water_Link_12 19.0 0.002 0.02 -Water_Link_12 20.0 0.002 0.02 -Water_Link_12 21.0 0.002 0.02 -Water_Link_12 22.0 0.002 0.02 -Water_Link_12 23.0 0.002 0.02 -Water_Link_12 24.0 0.002 0.02 -Water_Link_23 1.0 0.002 0.02 -Water_Link_23 2.0 0.002 0.02 -Water_Link_23 3.0 0.002 0.02 -Water_Link_23 4.0 0.002 0.02 -Water_Link_23 5.0 0.002 0.02 -Water_Link_23 6.0 0.002 0.02 -Water_Link_23 7.0 0.002 0.02 -Water_Link_23 8.0 0.002 0.02 -Water_Link_23 9.0 0.002 0.02 -Water_Link_23 10.0 0.002 0.02 -Water_Link_23 11.0 0.002 0.02 -Water_Link_23 12.0 0.002 0.02 -Water_Link_23 13.0 0.002 0.02 -Water_Link_23 14.0 0.002 0.02 -Water_Link_23 15.0 0.002 0.02 -Water_Link_23 16.0 0.002 0.02 -Water_Link_23 17.0 0.002 0.02 -Water_Link_23 18.0 0.002 0.02 -Water_Link_23 19.0 0.002 0.02 -Water_Link_23 20.0 0.002 0.02 -Water_Link_23 21.0 0.002 0.02 -Water_Link_23 22.0 0.002 0.02 -Water_Link_23 23.0 0.002 0.02 -Water_Link_23 24.0 0.002 0.02 -Water_Link_34 1.0 0.002 0.02 -Water_Link_34 2.0 0.002 0.02 -Water_Link_34 3.0 0.002 0.02 -Water_Link_34 4.0 0.002 0.02 -Water_Link_34 5.0 0.002 0.02 -Water_Link_34 6.0 0.002 0.02 -Water_Link_34 7.0 0.002 0.02 -Water_Link_34 8.0 0.002 0.02 -Water_Link_34 9.0 0.002 0.02 -Water_Link_34 10.0 0.002 0.02 -Water_Link_34 11.0 0.002 0.02 -Water_Link_34 12.0 0.002 0.02 -Water_Link_34 13.0 0.002 0.02 -Water_Link_34 14.0 0.002 0.02 -Water_Link_34 15.0 0.002 0.02 -Water_Link_34 16.0 0.002 0.02 -Water_Link_34 17.0 0.002 0.02 -Water_Link_34 18.0 0.002 0.02 -Water_Link_34 19.0 0.002 0.02 -Water_Link_34 20.0 0.002 0.02 -Water_Link_34 21.0 0.002 0.02 -Water_Link_34 22.0 0.002 0.02 -Water_Link_34 23.0 0.002 0.02 -Water_Link_34 24.0 0.002 0.02 -Water_Link_45 1.0 0.002 0.02 -Water_Link_45 2.0 0.002 0.02 -Water_Link_45 3.0 0.002 0.02 -Water_Link_45 4.0 0.002 0.02 -Water_Link_45 5.0 0.002 0.02 -Water_Link_45 6.0 0.002 0.02 -Water_Link_45 7.0 0.002 0.02 -Water_Link_45 8.0 0.002 0.02 -Water_Link_45 9.0 0.002 0.02 -Water_Link_45 10.0 0.002 0.02 -Water_Link_45 11.0 0.002 0.02 -Water_Link_45 12.0 0.002 0.02 -Water_Link_45 13.0 0.002 0.02 -Water_Link_45 14.0 0.002 0.02 -Water_Link_45 15.0 0.002 0.02 -Water_Link_45 16.0 0.002 0.02 -Water_Link_45 17.0 0.002 0.02 -Water_Link_45 18.0 0.002 0.02 -Water_Link_45 19.0 0.002 0.02 -Water_Link_45 20.0 0.002 0.02 -Water_Link_45 21.0 0.002 0.02 -Water_Link_45 22.0 0.002 0.02 -Water_Link_45 23.0 0.002 0.02 -Water_Link_45 24.0 0.002 0.02 +water_link timepoint min_tmp_flow_vol_per_second max_tmp_flow_vol_per_second threshold_side_stream_vol_per_second +Water_Link_12 1.0 0.002 0.02 . +Water_Link_12 2.0 0.002 0.02 . +Water_Link_12 3.0 0.002 0.02 . +Water_Link_12 4.0 0.002 0.02 . +Water_Link_12 5.0 0.002 0.02 . +Water_Link_12 6.0 0.002 0.02 . +Water_Link_12 7.0 0.002 0.02 . +Water_Link_12 8.0 0.002 0.02 . +Water_Link_12 9.0 0.002 0.02 . +Water_Link_12 10.0 0.002 0.02 . +Water_Link_12 11.0 0.002 0.02 . +Water_Link_12 12.0 0.002 0.02 . +Water_Link_12 13.0 0.002 0.02 . +Water_Link_12 14.0 0.002 0.02 . +Water_Link_12 15.0 0.002 0.02 . +Water_Link_12 16.0 0.002 0.02 . +Water_Link_12 17.0 0.002 0.02 . +Water_Link_12 18.0 0.002 0.02 . +Water_Link_12 19.0 0.002 0.02 . +Water_Link_12 20.0 0.002 0.02 . +Water_Link_12 21.0 0.002 0.02 . +Water_Link_12 22.0 0.002 0.02 . +Water_Link_12 23.0 0.002 0.02 . +Water_Link_12 24.0 0.002 0.02 . +Water_Link_23 1.0 0.002 0.02 . +Water_Link_23 2.0 0.002 0.02 . +Water_Link_23 3.0 0.002 0.02 . +Water_Link_23 4.0 0.002 0.02 . +Water_Link_23 5.0 0.002 0.02 . +Water_Link_23 6.0 0.002 0.02 . +Water_Link_23 7.0 0.002 0.02 . +Water_Link_23 8.0 0.002 0.02 . +Water_Link_23 9.0 0.002 0.02 . +Water_Link_23 10.0 0.002 0.02 . +Water_Link_23 11.0 0.002 0.02 . +Water_Link_23 12.0 0.002 0.02 . +Water_Link_23 13.0 0.002 0.02 . +Water_Link_23 14.0 0.002 0.02 . +Water_Link_23 15.0 0.002 0.02 . +Water_Link_23 16.0 0.002 0.02 . +Water_Link_23 17.0 0.002 0.02 . +Water_Link_23 18.0 0.002 0.02 . +Water_Link_23 19.0 0.002 0.02 . +Water_Link_23 20.0 0.002 0.02 . +Water_Link_23 21.0 0.002 0.02 . +Water_Link_23 22.0 0.002 0.02 . +Water_Link_23 23.0 0.002 0.02 . +Water_Link_23 24.0 0.002 0.02 . +Water_Link_34 1.0 0.002 0.02 . +Water_Link_34 2.0 0.002 0.02 . +Water_Link_34 3.0 0.002 0.02 . +Water_Link_34 4.0 0.002 0.02 . +Water_Link_34 5.0 0.002 0.02 . +Water_Link_34 6.0 0.002 0.02 . +Water_Link_34 7.0 0.002 0.02 . +Water_Link_34 8.0 0.002 0.02 . +Water_Link_34 9.0 0.002 0.02 . +Water_Link_34 10.0 0.002 0.02 . +Water_Link_34 11.0 0.002 0.02 . +Water_Link_34 12.0 0.002 0.02 . +Water_Link_34 13.0 0.002 0.02 . +Water_Link_34 14.0 0.002 0.02 . +Water_Link_34 15.0 0.002 0.02 . +Water_Link_34 16.0 0.002 0.02 . +Water_Link_34 17.0 0.002 0.02 . +Water_Link_34 18.0 0.002 0.02 . +Water_Link_34 19.0 0.002 0.02 . +Water_Link_34 20.0 0.002 0.02 . +Water_Link_34 21.0 0.002 0.02 . +Water_Link_34 22.0 0.002 0.02 . +Water_Link_34 23.0 0.002 0.02 . +Water_Link_34 24.0 0.002 0.02 . +Water_Link_45 1.0 0.002 0.02 . +Water_Link_45 2.0 0.002 0.02 . +Water_Link_45 3.0 0.002 0.02 . +Water_Link_45 4.0 0.002 0.02 . +Water_Link_45 5.0 0.002 0.02 . +Water_Link_45 6.0 0.002 0.02 . +Water_Link_45 7.0 0.002 0.02 . +Water_Link_45 8.0 0.002 0.02 . +Water_Link_45 9.0 0.002 0.02 . +Water_Link_45 10.0 0.002 0.02 . +Water_Link_45 11.0 0.002 0.02 . +Water_Link_45 12.0 0.002 0.02 . +Water_Link_45 13.0 0.002 0.02 . +Water_Link_45 14.0 0.002 0.02 . +Water_Link_45 15.0 0.002 0.02 . +Water_Link_45 16.0 0.002 0.02 . +Water_Link_45 17.0 0.002 0.02 . +Water_Link_45 18.0 0.002 0.02 . +Water_Link_45 19.0 0.002 0.02 . +Water_Link_45 20.0 0.002 0.02 . +Water_Link_45 21.0 0.002 0.02 . +Water_Link_45 22.0 0.002 0.02 . +Water_Link_45 23.0 0.002 0.02 . +Water_Link_45 24.0 0.002 0.02 . diff --git a/examples/hydro_system_exog_elev_w_travel_time_and_max_halfday_flows/hydro_iteration_1/inputs/water_flow_tmp_bounds.tab b/examples/hydro_system_exog_elev_w_travel_time_and_max_halfday_flows/hydro_iteration_1/inputs/water_flow_tmp_bounds.tab index 3918abcda8..3616e4f469 100644 --- a/examples/hydro_system_exog_elev_w_travel_time_and_max_halfday_flows/hydro_iteration_1/inputs/water_flow_tmp_bounds.tab +++ b/examples/hydro_system_exog_elev_w_travel_time_and_max_halfday_flows/hydro_iteration_1/inputs/water_flow_tmp_bounds.tab @@ -1,97 +1,97 @@ -water_link timepoint min_tmp_flow_vol_per_second max_tmp_flow_vol_per_second -Water_Link_12 1.0 0.002 0.02 -Water_Link_12 2.0 0.002 0.02 -Water_Link_12 3.0 0.002 0.02 -Water_Link_12 4.0 0.002 0.02 -Water_Link_12 5.0 0.002 0.02 -Water_Link_12 6.0 0.002 0.02 -Water_Link_12 7.0 0.002 0.02 -Water_Link_12 8.0 0.002 0.02 -Water_Link_12 9.0 0.002 0.02 -Water_Link_12 10.0 0.002 0.02 -Water_Link_12 11.0 0.002 0.02 -Water_Link_12 12.0 0.002 0.02 -Water_Link_12 13.0 0.002 0.02 -Water_Link_12 14.0 0.002 0.02 -Water_Link_12 15.0 0.002 0.02 -Water_Link_12 16.0 0.002 0.02 -Water_Link_12 17.0 0.002 0.02 -Water_Link_12 18.0 0.002 0.02 -Water_Link_12 19.0 0.002 0.02 -Water_Link_12 20.0 0.002 0.02 -Water_Link_12 21.0 0.002 0.02 -Water_Link_12 22.0 0.002 0.02 -Water_Link_12 23.0 0.002 0.02 -Water_Link_12 24.0 0.002 0.02 -Water_Link_23 1.0 0.002 0.02 -Water_Link_23 2.0 0.002 0.02 -Water_Link_23 3.0 0.002 0.02 -Water_Link_23 4.0 0.002 0.02 -Water_Link_23 5.0 0.002 0.02 -Water_Link_23 6.0 0.002 0.02 -Water_Link_23 7.0 0.002 0.02 -Water_Link_23 8.0 0.002 0.02 -Water_Link_23 9.0 0.002 0.02 -Water_Link_23 10.0 0.002 0.02 -Water_Link_23 11.0 0.002 0.02 -Water_Link_23 12.0 0.002 0.02 -Water_Link_23 13.0 0.002 0.02 -Water_Link_23 14.0 0.002 0.02 -Water_Link_23 15.0 0.002 0.02 -Water_Link_23 16.0 0.002 0.02 -Water_Link_23 17.0 0.002 0.02 -Water_Link_23 18.0 0.002 0.02 -Water_Link_23 19.0 0.002 0.02 -Water_Link_23 20.0 0.002 0.02 -Water_Link_23 21.0 0.002 0.02 -Water_Link_23 22.0 0.002 0.02 -Water_Link_23 23.0 0.002 0.02 -Water_Link_23 24.0 0.002 0.02 -Water_Link_34 1.0 0.002 0.02 -Water_Link_34 2.0 0.002 0.02 -Water_Link_34 3.0 0.002 0.02 -Water_Link_34 4.0 0.002 0.02 -Water_Link_34 5.0 0.002 0.02 -Water_Link_34 6.0 0.002 0.02 -Water_Link_34 7.0 0.002 0.02 -Water_Link_34 8.0 0.002 0.02 -Water_Link_34 9.0 0.002 0.02 -Water_Link_34 10.0 0.002 0.02 -Water_Link_34 11.0 0.002 0.02 -Water_Link_34 12.0 0.002 0.02 -Water_Link_34 13.0 0.002 0.02 -Water_Link_34 14.0 0.002 0.02 -Water_Link_34 15.0 0.002 0.02 -Water_Link_34 16.0 0.002 0.02 -Water_Link_34 17.0 0.002 0.02 -Water_Link_34 18.0 0.002 0.02 -Water_Link_34 19.0 0.002 0.02 -Water_Link_34 20.0 0.002 0.02 -Water_Link_34 21.0 0.002 0.02 -Water_Link_34 22.0 0.002 0.02 -Water_Link_34 23.0 0.002 0.02 -Water_Link_34 24.0 0.002 0.02 -Water_Link_45 1.0 0.002 0.02 -Water_Link_45 2.0 0.002 0.02 -Water_Link_45 3.0 0.002 0.02 -Water_Link_45 4.0 0.002 0.02 -Water_Link_45 5.0 0.002 0.02 -Water_Link_45 6.0 0.002 0.02 -Water_Link_45 7.0 0.002 0.02 -Water_Link_45 8.0 0.002 0.02 -Water_Link_45 9.0 0.002 0.02 -Water_Link_45 10.0 0.002 0.02 -Water_Link_45 11.0 0.002 0.02 -Water_Link_45 12.0 0.002 0.02 -Water_Link_45 13.0 0.002 0.02 -Water_Link_45 14.0 0.002 0.02 -Water_Link_45 15.0 0.002 0.02 -Water_Link_45 16.0 0.002 0.02 -Water_Link_45 17.0 0.002 0.02 -Water_Link_45 18.0 0.002 0.02 -Water_Link_45 19.0 0.002 0.02 -Water_Link_45 20.0 0.002 0.02 -Water_Link_45 21.0 0.002 0.02 -Water_Link_45 22.0 0.002 0.02 -Water_Link_45 23.0 0.002 0.02 -Water_Link_45 24.0 0.002 0.02 +water_link timepoint min_tmp_flow_vol_per_second max_tmp_flow_vol_per_second threshold_side_stream_vol_per_second +Water_Link_12 1.0 0.002 0.02 . +Water_Link_12 2.0 0.002 0.02 . +Water_Link_12 3.0 0.002 0.02 . +Water_Link_12 4.0 0.002 0.02 . +Water_Link_12 5.0 0.002 0.02 . +Water_Link_12 6.0 0.002 0.02 . +Water_Link_12 7.0 0.002 0.02 . +Water_Link_12 8.0 0.002 0.02 . +Water_Link_12 9.0 0.002 0.02 . +Water_Link_12 10.0 0.002 0.02 . +Water_Link_12 11.0 0.002 0.02 . +Water_Link_12 12.0 0.002 0.02 . +Water_Link_12 13.0 0.002 0.02 . +Water_Link_12 14.0 0.002 0.02 . +Water_Link_12 15.0 0.002 0.02 . +Water_Link_12 16.0 0.002 0.02 . +Water_Link_12 17.0 0.002 0.02 . +Water_Link_12 18.0 0.002 0.02 . +Water_Link_12 19.0 0.002 0.02 . +Water_Link_12 20.0 0.002 0.02 . +Water_Link_12 21.0 0.002 0.02 . +Water_Link_12 22.0 0.002 0.02 . +Water_Link_12 23.0 0.002 0.02 . +Water_Link_12 24.0 0.002 0.02 . +Water_Link_23 1.0 0.002 0.02 . +Water_Link_23 2.0 0.002 0.02 . +Water_Link_23 3.0 0.002 0.02 . +Water_Link_23 4.0 0.002 0.02 . +Water_Link_23 5.0 0.002 0.02 . +Water_Link_23 6.0 0.002 0.02 . +Water_Link_23 7.0 0.002 0.02 . +Water_Link_23 8.0 0.002 0.02 . +Water_Link_23 9.0 0.002 0.02 . +Water_Link_23 10.0 0.002 0.02 . +Water_Link_23 11.0 0.002 0.02 . +Water_Link_23 12.0 0.002 0.02 . +Water_Link_23 13.0 0.002 0.02 . +Water_Link_23 14.0 0.002 0.02 . +Water_Link_23 15.0 0.002 0.02 . +Water_Link_23 16.0 0.002 0.02 . +Water_Link_23 17.0 0.002 0.02 . +Water_Link_23 18.0 0.002 0.02 . +Water_Link_23 19.0 0.002 0.02 . +Water_Link_23 20.0 0.002 0.02 . +Water_Link_23 21.0 0.002 0.02 . +Water_Link_23 22.0 0.002 0.02 . +Water_Link_23 23.0 0.002 0.02 . +Water_Link_23 24.0 0.002 0.02 . +Water_Link_34 1.0 0.002 0.02 . +Water_Link_34 2.0 0.002 0.02 . +Water_Link_34 3.0 0.002 0.02 . +Water_Link_34 4.0 0.002 0.02 . +Water_Link_34 5.0 0.002 0.02 . +Water_Link_34 6.0 0.002 0.02 . +Water_Link_34 7.0 0.002 0.02 . +Water_Link_34 8.0 0.002 0.02 . +Water_Link_34 9.0 0.002 0.02 . +Water_Link_34 10.0 0.002 0.02 . +Water_Link_34 11.0 0.002 0.02 . +Water_Link_34 12.0 0.002 0.02 . +Water_Link_34 13.0 0.002 0.02 . +Water_Link_34 14.0 0.002 0.02 . +Water_Link_34 15.0 0.002 0.02 . +Water_Link_34 16.0 0.002 0.02 . +Water_Link_34 17.0 0.002 0.02 . +Water_Link_34 18.0 0.002 0.02 . +Water_Link_34 19.0 0.002 0.02 . +Water_Link_34 20.0 0.002 0.02 . +Water_Link_34 21.0 0.002 0.02 . +Water_Link_34 22.0 0.002 0.02 . +Water_Link_34 23.0 0.002 0.02 . +Water_Link_34 24.0 0.002 0.02 . +Water_Link_45 1.0 0.002 0.02 . +Water_Link_45 2.0 0.002 0.02 . +Water_Link_45 3.0 0.002 0.02 . +Water_Link_45 4.0 0.002 0.02 . +Water_Link_45 5.0 0.002 0.02 . +Water_Link_45 6.0 0.002 0.02 . +Water_Link_45 7.0 0.002 0.02 . +Water_Link_45 8.0 0.002 0.02 . +Water_Link_45 9.0 0.002 0.02 . +Water_Link_45 10.0 0.002 0.02 . +Water_Link_45 11.0 0.002 0.02 . +Water_Link_45 12.0 0.002 0.02 . +Water_Link_45 13.0 0.002 0.02 . +Water_Link_45 14.0 0.002 0.02 . +Water_Link_45 15.0 0.002 0.02 . +Water_Link_45 16.0 0.002 0.02 . +Water_Link_45 17.0 0.002 0.02 . +Water_Link_45 18.0 0.002 0.02 . +Water_Link_45 19.0 0.002 0.02 . +Water_Link_45 20.0 0.002 0.02 . +Water_Link_45 21.0 0.002 0.02 . +Water_Link_45 22.0 0.002 0.02 . +Water_Link_45 23.0 0.002 0.02 . +Water_Link_45 24.0 0.002 0.02 . diff --git a/examples/hydro_system_w_ramp_limits/hydro_iteration_1/inputs/water_flow_tmp_bounds.tab b/examples/hydro_system_w_ramp_limits/hydro_iteration_1/inputs/water_flow_tmp_bounds.tab index 3918abcda8..3616e4f469 100644 --- a/examples/hydro_system_w_ramp_limits/hydro_iteration_1/inputs/water_flow_tmp_bounds.tab +++ b/examples/hydro_system_w_ramp_limits/hydro_iteration_1/inputs/water_flow_tmp_bounds.tab @@ -1,97 +1,97 @@ -water_link timepoint min_tmp_flow_vol_per_second max_tmp_flow_vol_per_second -Water_Link_12 1.0 0.002 0.02 -Water_Link_12 2.0 0.002 0.02 -Water_Link_12 3.0 0.002 0.02 -Water_Link_12 4.0 0.002 0.02 -Water_Link_12 5.0 0.002 0.02 -Water_Link_12 6.0 0.002 0.02 -Water_Link_12 7.0 0.002 0.02 -Water_Link_12 8.0 0.002 0.02 -Water_Link_12 9.0 0.002 0.02 -Water_Link_12 10.0 0.002 0.02 -Water_Link_12 11.0 0.002 0.02 -Water_Link_12 12.0 0.002 0.02 -Water_Link_12 13.0 0.002 0.02 -Water_Link_12 14.0 0.002 0.02 -Water_Link_12 15.0 0.002 0.02 -Water_Link_12 16.0 0.002 0.02 -Water_Link_12 17.0 0.002 0.02 -Water_Link_12 18.0 0.002 0.02 -Water_Link_12 19.0 0.002 0.02 -Water_Link_12 20.0 0.002 0.02 -Water_Link_12 21.0 0.002 0.02 -Water_Link_12 22.0 0.002 0.02 -Water_Link_12 23.0 0.002 0.02 -Water_Link_12 24.0 0.002 0.02 -Water_Link_23 1.0 0.002 0.02 -Water_Link_23 2.0 0.002 0.02 -Water_Link_23 3.0 0.002 0.02 -Water_Link_23 4.0 0.002 0.02 -Water_Link_23 5.0 0.002 0.02 -Water_Link_23 6.0 0.002 0.02 -Water_Link_23 7.0 0.002 0.02 -Water_Link_23 8.0 0.002 0.02 -Water_Link_23 9.0 0.002 0.02 -Water_Link_23 10.0 0.002 0.02 -Water_Link_23 11.0 0.002 0.02 -Water_Link_23 12.0 0.002 0.02 -Water_Link_23 13.0 0.002 0.02 -Water_Link_23 14.0 0.002 0.02 -Water_Link_23 15.0 0.002 0.02 -Water_Link_23 16.0 0.002 0.02 -Water_Link_23 17.0 0.002 0.02 -Water_Link_23 18.0 0.002 0.02 -Water_Link_23 19.0 0.002 0.02 -Water_Link_23 20.0 0.002 0.02 -Water_Link_23 21.0 0.002 0.02 -Water_Link_23 22.0 0.002 0.02 -Water_Link_23 23.0 0.002 0.02 -Water_Link_23 24.0 0.002 0.02 -Water_Link_34 1.0 0.002 0.02 -Water_Link_34 2.0 0.002 0.02 -Water_Link_34 3.0 0.002 0.02 -Water_Link_34 4.0 0.002 0.02 -Water_Link_34 5.0 0.002 0.02 -Water_Link_34 6.0 0.002 0.02 -Water_Link_34 7.0 0.002 0.02 -Water_Link_34 8.0 0.002 0.02 -Water_Link_34 9.0 0.002 0.02 -Water_Link_34 10.0 0.002 0.02 -Water_Link_34 11.0 0.002 0.02 -Water_Link_34 12.0 0.002 0.02 -Water_Link_34 13.0 0.002 0.02 -Water_Link_34 14.0 0.002 0.02 -Water_Link_34 15.0 0.002 0.02 -Water_Link_34 16.0 0.002 0.02 -Water_Link_34 17.0 0.002 0.02 -Water_Link_34 18.0 0.002 0.02 -Water_Link_34 19.0 0.002 0.02 -Water_Link_34 20.0 0.002 0.02 -Water_Link_34 21.0 0.002 0.02 -Water_Link_34 22.0 0.002 0.02 -Water_Link_34 23.0 0.002 0.02 -Water_Link_34 24.0 0.002 0.02 -Water_Link_45 1.0 0.002 0.02 -Water_Link_45 2.0 0.002 0.02 -Water_Link_45 3.0 0.002 0.02 -Water_Link_45 4.0 0.002 0.02 -Water_Link_45 5.0 0.002 0.02 -Water_Link_45 6.0 0.002 0.02 -Water_Link_45 7.0 0.002 0.02 -Water_Link_45 8.0 0.002 0.02 -Water_Link_45 9.0 0.002 0.02 -Water_Link_45 10.0 0.002 0.02 -Water_Link_45 11.0 0.002 0.02 -Water_Link_45 12.0 0.002 0.02 -Water_Link_45 13.0 0.002 0.02 -Water_Link_45 14.0 0.002 0.02 -Water_Link_45 15.0 0.002 0.02 -Water_Link_45 16.0 0.002 0.02 -Water_Link_45 17.0 0.002 0.02 -Water_Link_45 18.0 0.002 0.02 -Water_Link_45 19.0 0.002 0.02 -Water_Link_45 20.0 0.002 0.02 -Water_Link_45 21.0 0.002 0.02 -Water_Link_45 22.0 0.002 0.02 -Water_Link_45 23.0 0.002 0.02 -Water_Link_45 24.0 0.002 0.02 +water_link timepoint min_tmp_flow_vol_per_second max_tmp_flow_vol_per_second threshold_side_stream_vol_per_second +Water_Link_12 1.0 0.002 0.02 . +Water_Link_12 2.0 0.002 0.02 . +Water_Link_12 3.0 0.002 0.02 . +Water_Link_12 4.0 0.002 0.02 . +Water_Link_12 5.0 0.002 0.02 . +Water_Link_12 6.0 0.002 0.02 . +Water_Link_12 7.0 0.002 0.02 . +Water_Link_12 8.0 0.002 0.02 . +Water_Link_12 9.0 0.002 0.02 . +Water_Link_12 10.0 0.002 0.02 . +Water_Link_12 11.0 0.002 0.02 . +Water_Link_12 12.0 0.002 0.02 . +Water_Link_12 13.0 0.002 0.02 . +Water_Link_12 14.0 0.002 0.02 . +Water_Link_12 15.0 0.002 0.02 . +Water_Link_12 16.0 0.002 0.02 . +Water_Link_12 17.0 0.002 0.02 . +Water_Link_12 18.0 0.002 0.02 . +Water_Link_12 19.0 0.002 0.02 . +Water_Link_12 20.0 0.002 0.02 . +Water_Link_12 21.0 0.002 0.02 . +Water_Link_12 22.0 0.002 0.02 . +Water_Link_12 23.0 0.002 0.02 . +Water_Link_12 24.0 0.002 0.02 . +Water_Link_23 1.0 0.002 0.02 . +Water_Link_23 2.0 0.002 0.02 . +Water_Link_23 3.0 0.002 0.02 . +Water_Link_23 4.0 0.002 0.02 . +Water_Link_23 5.0 0.002 0.02 . +Water_Link_23 6.0 0.002 0.02 . +Water_Link_23 7.0 0.002 0.02 . +Water_Link_23 8.0 0.002 0.02 . +Water_Link_23 9.0 0.002 0.02 . +Water_Link_23 10.0 0.002 0.02 . +Water_Link_23 11.0 0.002 0.02 . +Water_Link_23 12.0 0.002 0.02 . +Water_Link_23 13.0 0.002 0.02 . +Water_Link_23 14.0 0.002 0.02 . +Water_Link_23 15.0 0.002 0.02 . +Water_Link_23 16.0 0.002 0.02 . +Water_Link_23 17.0 0.002 0.02 . +Water_Link_23 18.0 0.002 0.02 . +Water_Link_23 19.0 0.002 0.02 . +Water_Link_23 20.0 0.002 0.02 . +Water_Link_23 21.0 0.002 0.02 . +Water_Link_23 22.0 0.002 0.02 . +Water_Link_23 23.0 0.002 0.02 . +Water_Link_23 24.0 0.002 0.02 . +Water_Link_34 1.0 0.002 0.02 . +Water_Link_34 2.0 0.002 0.02 . +Water_Link_34 3.0 0.002 0.02 . +Water_Link_34 4.0 0.002 0.02 . +Water_Link_34 5.0 0.002 0.02 . +Water_Link_34 6.0 0.002 0.02 . +Water_Link_34 7.0 0.002 0.02 . +Water_Link_34 8.0 0.002 0.02 . +Water_Link_34 9.0 0.002 0.02 . +Water_Link_34 10.0 0.002 0.02 . +Water_Link_34 11.0 0.002 0.02 . +Water_Link_34 12.0 0.002 0.02 . +Water_Link_34 13.0 0.002 0.02 . +Water_Link_34 14.0 0.002 0.02 . +Water_Link_34 15.0 0.002 0.02 . +Water_Link_34 16.0 0.002 0.02 . +Water_Link_34 17.0 0.002 0.02 . +Water_Link_34 18.0 0.002 0.02 . +Water_Link_34 19.0 0.002 0.02 . +Water_Link_34 20.0 0.002 0.02 . +Water_Link_34 21.0 0.002 0.02 . +Water_Link_34 22.0 0.002 0.02 . +Water_Link_34 23.0 0.002 0.02 . +Water_Link_34 24.0 0.002 0.02 . +Water_Link_45 1.0 0.002 0.02 . +Water_Link_45 2.0 0.002 0.02 . +Water_Link_45 3.0 0.002 0.02 . +Water_Link_45 4.0 0.002 0.02 . +Water_Link_45 5.0 0.002 0.02 . +Water_Link_45 6.0 0.002 0.02 . +Water_Link_45 7.0 0.002 0.02 . +Water_Link_45 8.0 0.002 0.02 . +Water_Link_45 9.0 0.002 0.02 . +Water_Link_45 10.0 0.002 0.02 . +Water_Link_45 11.0 0.002 0.02 . +Water_Link_45 12.0 0.002 0.02 . +Water_Link_45 13.0 0.002 0.02 . +Water_Link_45 14.0 0.002 0.02 . +Water_Link_45 15.0 0.002 0.02 . +Water_Link_45 16.0 0.002 0.02 . +Water_Link_45 17.0 0.002 0.02 . +Water_Link_45 18.0 0.002 0.02 . +Water_Link_45 19.0 0.002 0.02 . +Water_Link_45 20.0 0.002 0.02 . +Water_Link_45 21.0 0.002 0.02 . +Water_Link_45 22.0 0.002 0.02 . +Water_Link_45 23.0 0.002 0.02 . +Water_Link_45 24.0 0.002 0.02 . diff --git a/gridpath/project/operations/operational_types/energy_hrz_shaping.py b/gridpath/project/operations/operational_types/energy_hrz_shaping.py index a6a92a4c2f..99b705d6af 100644 --- a/gridpath/project/operations/operational_types/energy_hrz_shaping.py +++ b/gridpath/project/operations/operational_types/energy_hrz_shaping.py @@ -209,10 +209,6 @@ def add_model_components( m.ENERGY_HRZ_SHAPING_OPR_BT_HRZS, within=NonNegativeReals ) - m.energy_hrz_shaping_peak_deviation_demand_charge = Param( - m.ENERGY_HRZ_SHAPING, m.PERIODS, m.MONTHS, within=NonNegativeReals, default=0 - ) - # Variables ########################################################################### @@ -220,13 +216,6 @@ def add_model_components( m.ENERGY_HRZ_SHAPING_OPR_TMPS, within=NonNegativeReals ) - m.EnergyHrzShaping_Peak_Deviation_in_Month = Var( - m.ENERGY_HRZ_SHAPING_OPR_PRDS, - m.MONTHS, - within=NonNegativeReals, - initialize=0, - ) - # Constraints ########################################################################### @@ -242,32 +231,6 @@ def add_model_components( m.ENERGY_HRZ_SHAPING_OPR_BT_HRZS, rule=energy_budget_rule ) - def monthly_peak_deviation_rule(mod, prj, tmp): - if mod.energy_hrz_shaping_peak_deviation_demand_charge == 0: - return Constraint.Skip - else: - return mod.EnergyHrzShaping_Peak_Deviation_in_Month[ - prj, mod.period[tmp], mod.month[tmp] - ] >= ( - mod.EnergyHrzShaping_Provide_Power_MW[prj, tmp] - - sum( - mod.EnergyHrzShaping_Provide_Power_MW[prj, _tmp] - * mod.hrs_in_tmp[_tmp] - * mod.tmp_weight[_tmp] - for _tmp in mod.TMPS_IN_PRD[mod.period[tmp]] - if mod.month[tmp] == mod.month[_tmp] - ) - / sum( - mod.hrs_in_tmp[_tmp] * mod.tmp_weight[_tmp] - for _tmp in mod.TMPS_IN_PRD[mod.period[tmp]] - if mod.month[tmp] == mod.month[_tmp] - ) - ) - - m.EnergyHrzShaping_Peak_Deviation_in_Month_Constraint = Constraint( - m.ENERGY_HRZ_SHAPING_OPR_TMPS, rule=monthly_peak_deviation_rule - ) - def total_energy_constraint(mod, prj, prd): """ This constraint is somewhat redundant, but here to prevent degeneracy @@ -308,13 +271,6 @@ def max_power_rule(mod, prj, tmp): ) -def peak_deviation_monthly_demand_charge_cost_rule(mod, prj, prd, mnth): - return ( - mod.EnergyHrzShaping_Peak_Deviation_in_Month[prj, prd, mnth] - * mod.energy_hrz_shaping_peak_deviation_demand_charge[prj, prd, mnth] - ) - - def min_power_rule(mod, prj, tmp): """ **Constraint Name**: EnergyHrzShaping_Min_Power_Constraint diff --git a/gridpath/project/operations/operational_types/energy_load_following.py b/gridpath/project/operations/operational_types/energy_load_following.py index 1fa6f74ac2..47aef7b8d5 100644 --- a/gridpath/project/operations/operational_types/energy_load_following.py +++ b/gridpath/project/operations/operational_types/energy_load_following.py @@ -276,26 +276,38 @@ def load_following_rule(mod, prj, tmp): ) def monthly_peak_deviation_rule(mod, prj, tmp): - if mod.energy_load_following_peak_deviation_demand_charge == 0: + prd = mod.period[tmp] + mnth = mod.month[tmp] + if mod.energy_load_following_peak_deviation_demand_charge[prj, prd, mnth] == 0: return Constraint.Skip - else: - return mod.EnergyLoadFollowing_Peak_Deviation_in_Month[ - prj, mod.period[tmp], mod.month[tmp] - ] >= ( - mod.EnergyLoadFollowing_Provide_Power_MW[prj, tmp] - - sum( - mod.EnergyLoadFollowing_Provide_Power_MW[prj, _tmp] - * mod.hrs_in_tmp[_tmp] - * mod.tmp_weight[_tmp] - for _tmp in mod.TMPS_IN_PRD[mod.period[tmp]] - if mod.month[tmp] == mod.month[_tmp] - ) - / sum( - mod.hrs_in_tmp[_tmp] * mod.tmp_weight[_tmp] - for _tmp in mod.TMPS_IN_PRD[mod.period[tmp]] - if mod.month[tmp] == mod.month[_tmp] - ) + + # Group timepoints and total the weighted hours by (period, month) + # once on the first call rather than rescanning TMPS_IN_PRD for + # every project-timepoint + if not hasattr(mod, "_gridpath_energy_load_following_tmps_by_prd_mnth"): + tmps_by_prd_mnth = {} + for _tmp in mod.TMPS: + tmps_by_prd_mnth.setdefault( + (mod.period[_tmp], mod.month[_tmp]), [] + ).append(_tmp) + mod._gridpath_energy_load_following_tmps_by_prd_mnth = tmps_by_prd_mnth + mod._gridpath_energy_load_following_wtd_hrs_by_prd_mnth = { + key: sum(mod.hrs_in_tmp[t] * mod.tmp_weight[t] for t in tmps) + for key, tmps in tmps_by_prd_mnth.items() + } + + return mod.EnergyLoadFollowing_Peak_Deviation_in_Month[prj, prd, mnth] >= ( + mod.EnergyLoadFollowing_Provide_Power_MW[prj, tmp] + - sum( + mod.EnergyLoadFollowing_Provide_Power_MW[prj, _tmp] + * mod.hrs_in_tmp[_tmp] + * mod.tmp_weight[_tmp] + for _tmp in mod._gridpath_energy_load_following_tmps_by_prd_mnth[ + prd, mnth + ] ) + / mod._gridpath_energy_load_following_wtd_hrs_by_prd_mnth[prd, mnth] + ) m.EnergyLoadFollowing_Peak_Deviation_in_Month_Constraint = Constraint( m.ENERGY_LOAD_FOLLOWING_OPR_TMPS, rule=monthly_peak_deviation_rule diff --git a/gridpath/project/operations/operational_types/energy_profile.py b/gridpath/project/operations/operational_types/energy_profile.py index 198a8c0c2d..f8442b220c 100644 --- a/gridpath/project/operations/operational_types/energy_profile.py +++ b/gridpath/project/operations/operational_types/energy_profile.py @@ -12,14 +12,26 @@ # See the License for the specific language governing permissions and # limitations under the License. -""" """ +""" +This operational type describes projects that deliver a pre-specified +fraction of their period-level energy in each timepoint, e.g. an energy +contract with a fixed delivery profile. Power provision in each timepoint +must be at least the profiled energy for the timepoint (the period energy +times the timepoint's energy fraction, converted to power via the hours in +timepoint and timepoint weight) and may exceed it by up to the project's +shaping capacity, if any. + +Energy fractions may be negative in some timepoints, in which case the +project's power provision is negative there, i.e. the project acts as load. +Note that costs for this operational type include variable O&M costs, which +are incurred on power provision, so negative power provision in a timepoint +results in a negative variable O&M cost, i.e. a cost credit. +""" from pyomo.environ import ( Param, Set, - NonNegativeReals, Reals, - Expression, Var, Constraint, ) @@ -88,11 +100,26 @@ def add_model_components( | Required Input Params | +=========================================================================+ | | :code:`energy_profile_energy_fraction` | - | | *Defined over*: :code:`ENERGY_PROFILE` | + | | *Defined over*: :code:`ENERGY_PROFILE_OPR_TMPS` | | | *Within*: :code:`Reals` | | | - | The project's power output in each operational timepoint as a fraction | - | of its available capacity (i.e. the capacity factor). | + | The fraction of the project's period-level energy delivered in each | + | operational timepoint. Can be negative, in which case the project acts | + | as load in the timepoint. | + +-------------------------------------------------------------------------+ + + | + + +-------------------------------------------------------------------------+ + | Variables | + +=========================================================================+ + | | :code:`EnergyProfile_Provide_Power_MW` | + | | *Defined over*: :code:`ENERGY_PROFILE_OPR_TMPS` | + | | *Within*: :code:`Reals` | + | | + | Power provision in MW in each operational timepoint. Negative in | + | timepoints with a negative energy fraction; note that any variable O&M | + | cost then also accrues negatively (a credit) in those timepoints. | +-------------------------------------------------------------------------+ | @@ -100,13 +127,13 @@ def add_model_components( +-------------------------------------------------------------------------+ | Constraints | +=========================================================================+ - | | :code:`EnergyProfile_No_Upward_Reserves_Constraint` | - | | *Defined over*: :code:`ENERGY_PROFILE_OPR_TMPS` | + | | :code:`EnergyProfile_No_Upward_Reserves_Constraint` | + | | *Defined over*: :code:`ENERGY_PROFILE_OPR_TMPS` | | | | Variable must-take generator projects cannot provide upward reserves. | +-------------------------------------------------------------------------+ - | | :code:`EnergyProfile_No_Downward_Reserves_Constraint` | - | | *Defined over*: :code:`ENERGY_PROFILE_OPR_TMPS` | + | | :code:`EnergyProfile_No_Downward_Reserves_Constraint` | + | | *Defined over*: :code:`ENERGY_PROFILE_OPR_TMPS` | | | | Variable must-take generator projects cannot provide downward reserves. | +-------------------------------------------------------------------------+ @@ -134,34 +161,15 @@ def add_model_components( ), ) - m.ENERGY_PROFILE_OPR_PRDS = Set( - dimen=2, - initialize=lambda mod: subset_init_by_set_membership( - mod=mod, - superset="PRJ_OPR_PRDS", - index=0, - membership_set=mod.ENERGY_PROFILE, - ), - ) - # Required Params ########################################################################### m.energy_profile_energy_fraction = Param(m.ENERGY_PROFILE_OPR_TMPS, within=Reals) - m.energy_profile_peak_deviation_demand_charge = Param( - m.ENERGY_PROFILE, m.PERIODS, m.MONTHS, within=NonNegativeReals, default=0 - ) # Variables - m.EnergyProfile_Provide_Power_MW = Var( - m.ENERGY_PROFILE_OPR_TMPS, within=NonNegativeReals - ) - m.EnergyProfile_Peak_Deviation_in_Month = Var( - m.ENERGY_PROFILE_OPR_PRDS, - m.MONTHS, - within=NonNegativeReals, - initialize=0, - ) + # Negative power is possible in timepoints with negative energy + # fractions (e.g., profiles that include load-modifier behavior) + m.EnergyProfile_Provide_Power_MW = Var(m.ENERGY_PROFILE_OPR_TMPS, within=Reals) # Constraints ########################################################################### @@ -190,32 +198,6 @@ def provide_power_max_constraint_rule(mod, prj, tmp): m.ENERGY_PROFILE_OPR_TMPS, rule=provide_power_max_constraint_rule ) - def monthly_peak_deviation_rule(mod, prj, tmp): - if mod.energy_profile_peak_deviation_demand_charge == 0: - return Constraint.Skip - else: - return mod.EnergyProfile_Peak_Deviation_in_Month[ - prj, mod.period[tmp], mod.month[tmp] - ] >= ( - mod.EnergyProfile_Provide_Power_MW[prj, tmp] - - sum( - mod.EnergyProfile_Provide_Power_MW[prj, _tmp] - * mod.hrs_in_tmp[_tmp] - * mod.tmp_weight[_tmp] - for _tmp in mod.TMPS_IN_PRD[mod.period[tmp]] - if mod.month[tmp] == mod.month[_tmp] - ) - / sum( - mod.hrs_in_tmp[_tmp] * mod.tmp_weight[_tmp] - for _tmp in mod.TMPS_IN_PRD[mod.period[tmp]] - if mod.month[tmp] == mod.month[_tmp] - ) - ) - - m.EnergyProfile_Peak_Deviation_in_Month_Constraint = Constraint( - m.ENERGY_PROFILE_OPR_TMPS, rule=monthly_peak_deviation_rule - ) - # TODO: remove this constraint once input validation is in place that # does not allow specifying a reserve_zone if 'energy_profile' type def no_upward_reserve_rule(mod, g, tmp): @@ -273,22 +255,16 @@ def no_downward_reserve_rule(mod, g, tmp): def power_provision_rule(mod, prj, tmp): """ - Power provision from energy_profile generators is their total energy for - the period times the energy profile fraction for the timepoint, - and converted to power via the hours in timepoint and timepoint weight - parameters. + Power provision from energy_profile projects is at least their total + energy for the period times the energy profile fraction for the + timepoint (converted to power via the hours in timepoint and timepoint + weight parameters) and at most that amount plus the project's shaping + capacity. It is negative in timepoints with a negative energy fraction. """ return mod.EnergyProfile_Provide_Power_MW[prj, tmp] -def peak_deviation_monthly_demand_charge_cost_rule(mod, prj, prd, mnth): - return ( - mod.EnergyProfile_Peak_Deviation_in_Month[prj, prd, mnth] - * mod.energy_profile_peak_deviation_demand_charge[prj, prd, mnth] - ) - - def power_delta_rule(mod, g, tmp): if check_if_first_timepoint( mod=mod, tmp=tmp, balancing_type=mod.balancing_type_project[g] diff --git a/gridpath/project/operations/operational_types/energy_slice_hrz_shaping.py b/gridpath/project/operations/operational_types/energy_slice_hrz_shaping.py index e9eae6a4d7..b641cb5ee3 100644 --- a/gridpath/project/operations/operational_types/energy_slice_hrz_shaping.py +++ b/gridpath/project/operations/operational_types/energy_slice_hrz_shaping.py @@ -214,14 +214,6 @@ def add_model_components( m.ENERGY_SLICE_HRZ_SHAPING_OPR_BT_HRZS, within=NonNegativeReals ) - m.energy_slice_hrz_shaping_peak_deviation_demand_charge = Param( - m.ENERGY_SLICE_HRZ_SHAPING, - m.PERIODS, - m.MONTHS, - within=NonNegativeReals, - default=0, - ) - # Expressions def slice_init(mod, prj, prd): if mod.max_total_energy[prj, prd] == float("inf"): @@ -246,13 +238,6 @@ def slice_init(mod, prj, prd): m.ENERGY_SLICE_HRZ_SHAPING_OPR_TMPS, within=NonNegativeReals ) - m.EnergySliceHrzShaping_Peak_Deviation_in_Month = Var( - m.ENERGY_SLICE_HRZ_SHAPING_OPR_PRDS, - m.MONTHS, - within=NonNegativeReals, - initialize=0, - ) - # Constraints ########################################################################### @@ -334,33 +319,6 @@ def energy_budget_rule(mod, prj, bt, h): m.ENERGY_SLICE_HRZ_SHAPING_OPR_BT_HRZS, rule=energy_budget_rule ) - # Demand charge - def monthly_peak_deviation_rule(mod, prj, tmp): - if mod.energy_slice_hrz_shaping_peak_deviation_demand_charge == 0: - return Constraint.Skip - else: - return mod.EnergySliceHrzShaping_Peak_Deviation_in_Month[ - prj, mod.period[tmp], mod.month[tmp] - ] >= ( - mod.EnergySliceHrzShaping_Provide_Power_MW[prj, tmp] - - sum( - mod.EnergySliceHrzShaping_Provide_Power_MW[prj, _tmp] - * mod.hrs_in_tmp[_tmp] - * mod.tmp_weight[_tmp] - for _tmp in mod.TMPS_IN_PRD[mod.period[tmp]] - if mod.month[tmp] == mod.month[_tmp] - ) - / sum( - mod.hrs_in_tmp[_tmp] * mod.tmp_weight[_tmp] - for _tmp in mod.TMPS_IN_PRD[mod.period[tmp]] - if mod.month[tmp] == mod.month[_tmp] - ) - ) - - m.EnergySliceHrzShaping_Peak_Deviation_in_Month_Constraint = Constraint( - m.ENERGY_SLICE_HRZ_SHAPING_OPR_TMPS, rule=monthly_peak_deviation_rule - ) - # Operational Type Methods ############################################################################### @@ -371,13 +329,6 @@ def power_provision_rule(mod, prj, tmp): return mod.EnergySliceHrzShaping_Provide_Power_MW[prj, tmp] -def peak_deviation_monthly_demand_charge_cost_rule(mod, prj, prd, mnth): - return ( - mod.EnergySliceHrzShaping_Peak_Deviation_in_Month[prj, prd, mnth] - * mod.energy_slice_hrz_shaping_peak_deviation_demand_charge[prj, prd, mnth] - ) - - def power_delta_rule(mod, prj, tmp): """ This rule is only used in tuning costs, so fine to skip for linked diff --git a/gridpath/project/operations/operational_types/gen_var.py b/gridpath/project/operations/operational_types/gen_var.py index 15cdf3797a..7087136f99 100644 --- a/gridpath/project/operations/operational_types/gen_var.py +++ b/gridpath/project/operations/operational_types/gen_var.py @@ -20,7 +20,11 @@ experimental features to allow these generators to provide upward and/or downward reserves. -Costs for this operational type include variable O&M costs. +Costs for this operational type include variable O&M costs, which are +incurred on all available power (including what's curtailed). Capacity +factors may be negative (e.g. profiles that are net of onsite load), in +which case power provision is negative in those timepoints and the variable +O&M cost accrues negatively, i.e. as a cost credit. """ @@ -130,10 +134,12 @@ def add_model_components( +=========================================================================+ | | :code:`GenVar_Provide_Power_MW` | | | *Defined over*: :code:`GEN_VAR_OPR_TMPS` | - | | *Within*: :code:`NonNegativeReals` | + | | *Within*: :code:`Reals` | | | | Power provision in MW from this project in each timepoint in which the | | project is operational (capacity exists and the project is available). | + | Negative in timepoints with a negative capacity factor (e.g. profiles | + | net of onsite load), in which case the project acts as load. | +-------------------------------------------------------------------------+ | | :code:`GenVar_Scheduled_Curtailment_MW` | | | *Defined over*: :code:`GEN_VAR_OPR_TMPS` | @@ -394,7 +400,8 @@ def power_provision_rule(mod, g, tmp): def variable_om_cost_rule(mod, g, tmp): """ Variable cost is incurred on all power produced (including what's - curtailed). + curtailed). In timepoints with a negative capacity factor, this cost + is negative, i.e. a credit. """ return ( mod.Capacity_MW[g, mod.period[tmp]] diff --git a/gridpath/system/water/water_flows.py b/gridpath/system/water/water_flows.py index 0966af4f4d..2cab6cf630 100644 --- a/gridpath/system/water/water_flows.py +++ b/gridpath/system/water/water_flows.py @@ -1,4 +1,5 @@ # Copyright 2016-2025 Blue Marble Analytics LLC. +# Copyright 2026 Sylvan Energy Analytics LLC. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -103,6 +104,16 @@ def add_model_components( ) m.max_tmp_flow_vol_per_second = Param(m.WATER_LINKS, m.TMPS, default=float("inf")) + # Threshold upstream inflow above which max timepoint flows will be + # adjusted + # If not specified, defaults to infinity, so no adjustment will be made + m.threshold_side_stream_vol_per_second = Param( + m.WATER_LINKS, + m.TMPS, + within=NonNegativeReals, + default=float("inf"), + ) + # Min and max total flows by horizon m.WATER_LINKS_W_BT_HRZ_MIN_FLOW_CONSTRAINT = Set( dimen=3, within=m.WATER_LINKS * m.BLN_TYPE_HRZS @@ -129,6 +140,23 @@ def add_model_components( default=float("inf"), ) + # Mapping of the water nodes upstream of a water link whose exogenous + # inflows count toward the side stream thresholds (both by-timepoint and + # by-horizon) + m.WATER_LINK_UPSTREAM_WATER_NODES = Set(within=m.WATER_LINKS * m.WATER_NODES) + + def upstream_water_nodes_by_water_link_init(mod): + nodes_by_link = {wl: [] for wl in mod.WATER_LINKS} + for _wl, wn in mod.WATER_LINK_UPSTREAM_WATER_NODES: + nodes_by_link[_wl].append(wn) + + return nodes_by_link + + m.UPSTREAM_WATER_NODES_BY_WATER_LINK = Set( + m.WATER_LINKS, + initialize=upstream_water_nodes_by_water_link_init, + ) + # Set WATER_LINK_DEPARTURE_ARRIVAL_TMPS def water_link_departure_arrival_tmp_init(mod): wl_dep_arr_tmp = [] @@ -376,15 +404,37 @@ def min_tmp_flow_rule(mod, wl, dep_tmp, arr_tmp): ) def max_tmp_flow_rule(mod, wl, dep_tmp, arr_tmp): + """ + Rule for max flows in a timepoint. The max is a parameter by + timepoint plus an optional adjustment for upstream exogenous inflows + (requires a mapping to be provided of water nodes upstream from + water link wl) above a threshold inflow rate + (threshold_side_stream_vol_per_second). If the latter is not + specified, the max_tmp_flow_vol_per_second will bind. + """ max_flow = mod.max_tmp_flow_vol_per_second[wl, dep_tmp] if max_flow == float("inf"): return Constraint.Skip + threshold = mod.threshold_side_stream_vol_per_second[wl, dep_tmp] + # Avoid the upstream-inflow sum in the common case of no threshold + # (the adjustment is always 0 with an infinite threshold) + if threshold == float("inf"): + side_stream_adjustment = 0 + else: + side_stream_adjustment = max( + sum( + mod.total_exogenous_water_inflow_rate_vol_per_sec[wn, dep_tmp] + for wn in mod.UPSTREAM_WATER_NODES_BY_WATER_LINK[wl] + ) + - threshold, + 0, + ) return ( mod.Water_Link_Flow_Rate_Vol_per_Sec[wl, dep_tmp, arr_tmp] - mod.Water_Link_Max_Flow_Violation_Vol_per_Sec_Expression[ wl, dep_tmp, arr_tmp ] - <= max_flow + <= max_flow + side_stream_adjustment ) m.Water_Link_Maximum_Flow_Constraint = Constraint( @@ -414,20 +464,6 @@ def min_total_hrz_flow_constraint_rule(mod, wl, bt, hrz): rule=min_total_hrz_flow_constraint_rule, ) - m.WATER_LINK_UPSTREAM_WATER_NODES = Set(within=m.WATER_LINKS * m.WATER_NODES) - - def upstream_water_nodes_by_water_link_init(mod): - nodes_by_link = {wl: [] for wl in mod.WATER_LINKS} - for _wl, wn in mod.WATER_LINK_UPSTREAM_WATER_NODES: - nodes_by_link[_wl].append(wn) - - return nodes_by_link - - m.UPSTREAM_WATER_NODES_BY_WATER_LINK = Set( - m.WATER_LINKS, - initialize=upstream_water_nodes_by_water_link_init, - ) - def max_total_hrz_flow_constraint_rule(mod, wl, bt, hrz): """ Rule for max flows over a horizon. The max is a parameter by bt-hrz @@ -661,7 +697,11 @@ def load_model_data( if os.path.exists(tmp_fname): data_portal.load( filename=tmp_fname, - param=(m.min_tmp_flow_vol_per_second, m.max_tmp_flow_vol_per_second), + param=( + m.min_tmp_flow_vol_per_second, + m.max_tmp_flow_vol_per_second, + m.threshold_side_stream_vol_per_second, + ), ) hrz_min_fname = os.path.join( @@ -770,8 +810,9 @@ def get_inputs_from_database( """) c1 = conn.cursor() - tmp_sql = f"""SELECT water_link, timepoint, - min_tmp_flow_vol_per_second, max_tmp_flow_vol_per_second + tmp_sql = f"""SELECT water_link, timepoint, + min_tmp_flow_vol_per_second, max_tmp_flow_vol_per_second, + threshold_side_stream_vol_per_second FROM inputs_system_water_flows_timepoint_bounds WHERE (water_link, water_flow_timepoint_bounds_scenario_id) in ( SELECT water_link, water_flow_timepoint_bounds_scenario_id @@ -851,11 +892,11 @@ def get_inputs_from_database( hrz_max_flow_bounds = c3.execute(hrz_max_sql) wl_upstream_wn_map_sql = f"""SELECT water_link, upstream_water_node - FROM inputs_system_water_flows_horizon_bounds_upstream_node_map - WHERE (water_link, water_flow_horizon_bounds_scenario_id) in ( - SELECT water_link, water_flow_horizon_bounds_scenario_id + FROM inputs_system_water_flows_upstream_node_map + WHERE (water_link, water_flow_upstream_node_map_scenario_id) in ( + SELECT water_link, water_flow_upstream_node_map_scenario_id FROM inputs_system_water_flows - WHERE water_flow_scenario_id = + WHERE water_flow_scenario_id = {subscenarios.WATER_FLOW_SCENARIO_ID} ) AND water_link IN ( @@ -1114,6 +1155,10 @@ def export_results( "water_flow_vol_per_sec", "water_flow_min_violation_vol_per_sec", "water_flow_max_violation_vol_per_sec", + "max_tmp_flow_vol_per_second", + "threshold_side_stream_vol_per_second", + "upstream_exogenous_inflow_vol_per_sec", + "adjusted_max_tmp_flow_vol_per_second", "water_link_min_flow_constraint_dual", "water_link_min_flow_constraint_marginal_cost_per_vol_per_sec", "water_link_max_flow_constraint_dual", @@ -1133,6 +1178,23 @@ def tmp_flow_constraint_dual_and_marginal_cost(constraint, wl, dep_tmp, arr_tmp) none_dual_type_error_wrapper(dual, m.tmp_objective_coefficient[dep_tmp]), ] + def upstream_exogenous_inflow_vol_per_sec(wl, dep_tmp): + return sum( + m.total_exogenous_water_inflow_rate_vol_per_sec[wn, dep_tmp] + for wn in m.UPSTREAM_WATER_NODES_BY_WATER_LINK[wl] + ) + + def adjusted_max_tmp_flow_vol_per_second(wl, dep_tmp): + max_flow = m.max_tmp_flow_vol_per_second[wl, dep_tmp] + if max_flow == float("inf"): + return None + threshold = m.threshold_side_stream_vol_per_second[wl, dep_tmp] + if threshold == float("inf"): + return max_flow + return max_flow + max( + upstream_exogenous_inflow_vol_per_sec(wl, dep_tmp) - threshold, 0 + ) + tmp_data = [ [ wl, @@ -1149,6 +1211,25 @@ def tmp_flow_constraint_dual_and_marginal_cost(constraint, wl, dep_tmp, arr_tmp) wl, dep_tmp, arr_tmp ] ), + # max_tmp_flow_vol_per_second + ( + m.max_tmp_flow_vol_per_second[wl, dep_tmp] + if m.max_tmp_flow_vol_per_second[wl, dep_tmp] != float("inf") + else None + ), + # threshold_side_stream_vol_per_second + ( + m.threshold_side_stream_vol_per_second[wl, dep_tmp] + if m.threshold_side_stream_vol_per_second[wl, dep_tmp] != float("inf") + else None + ), + # upstream_exogenous_inflow_vol_per_sec + ( + upstream_exogenous_inflow_vol_per_sec(wl, dep_tmp) + if len(m.UPSTREAM_WATER_NODES_BY_WATER_LINK[wl]) > 0 + else None + ), + adjusted_max_tmp_flow_vol_per_second(wl, dep_tmp), *tmp_flow_constraint_dual_and_marginal_cost( m.Water_Link_Minimum_Flow_Constraint, wl, dep_tmp, arr_tmp ), diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000000..9e0bffaa89 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,146 @@ +[build-system] +requires = ["setuptools>=77"] +build-backend = "setuptools.build_meta" + +[project] +name = "GridPath" +dynamic = ["version"] +description = "A versatile simulation and optimization platform for power-system planning and operations." +readme = "README.md" +license = "Apache-2.0" +maintainers = [ + { name = "Sylvan Energy Analytics LLC", email = "info@sylvan.energy" }, +] +keywords = ["energy", "electricity", "power", "renewables", "planning", "operations"] +requires-python = ">=3.11" +dependencies = [ + "Pyomo==6.10.1", # Optimization modeling language + "pandas==3.0.3", # Data-processing + "bokeh==3.9.1", # Visualization library + "pscript==0.8.1", # Python to JavaScript compiler (for viz) + "networkx==3.6.1", # network package for DC OPF + "PyUtilib==6.0.0", # used for solver temp file management + "highspy==1.15.1", # HiGHS Python interface (default solver) + "dill==0.4.1", # pickling + "duckdb==1.5.4", # data-handling + "sphinx-rtd-theme", # documentation theme +] + +[project.urls] +Homepage = "https://www.gridpath.io" +Discussions = "https://github.com/sylvan-energy/gridpath/discussions" +Documentation = "https://gridpath.readthedocs.io/en/latest/" +Issues = "https://github.com/sylvan-energy/gridpath/issues" +"Source Code" = "https://github.com/sylvan-energy/gridpath" + +# Note: df2img (used only by doc/opchar_img_gen.py, a standalone script that +# regenerates the checked-in opchar diagram images) is deliberately NOT +# listed here: its pandas<3.0 constraint can never be satisfied alongside +# GridPath's own pandas==3.0.3 pin in dependencies (extras are additive, +# not a replacement). Read the Docs builds straight from doc/source/conf.py +# and never touches df2img/opchar_img_gen.py, since the images are +# pre-generated and committed to doc/graphics/. To regenerate them after +# editing opchar_param_requirements.csv, install df2img in a separate +# throwaway environment (e.g. its own venv with an older pandas) and run +# opchar_img_gen.py there directly. +[project.optional-dependencies] +doc = [ + "Sphinx==7.2.6", + "sphinx-argparse==0.4.0", +] +coverage = [ + "coverage", # test coverage + "coveralls", # automated coverage results +] +gurobi = ["gurobipy"] # Gurobi Python interface +parallel_tests = [ + "pytest", # test runner (collects the unittest suite as is) + "pytest-xdist", # parallel test execution (see scripts/run_tests_parallel.py) + "pytest-cov", # coverage measurement that reaches the xdist workers +] +all = [ + "GridPath[doc,coverage,gurobi,parallel_tests]", + "black", +] + +[project.scripts] +gridpath = "gridpath.cli:main" +gridpath_run = "gridpath.run_scenario:main" +gridpath_run_parallel = "gridpath.run_scenario_parallel:main" +gridpath_run_e2e = "gridpath.run_end_to_end:main" +gridpath_get_inputs = "gridpath.get_scenario_inputs:main" +gridpath_import_results = "gridpath.import_scenario_results:main" +gridpath_process_results = "gridpath.process_results:main" +gridpath_validate = "gridpath.validate_inputs:main" +gridpath_run_server = "ui.server.run_server:main" +gridpath_run_queue_manager = "ui.server.run_queue_manager:main" +gridpath_create_database = "db.create_database:main" +gridpath_load_csvs = "db.utilities.port_csvs_to_db:main" +gridpath_load_scenarios = "db.utilities.scenario:main" +gridpath_get_pudl_data = "data_toolkit.raw_data.pudl.download_data_from_pudl:main" +gridpath_pudl_to_gridpath_raw = "data_toolkit.raw_data.pudl.pudl_to_gridpath_raw_data:main" +gridpath_get_pcm_demo_inputs = "data_toolkit.raw_data.get_pcm_demo_user_defined_inputs:main" +gridpath_get_ra_toolkit_data_raw = "data_toolkit.raw_data.ra_toolkit.get_ra_toolkit_data:main" +gridpath_run_data_toolkit = "data_toolkit.run_data_toolkit:main" +gridpath_load_raw_data = "data_toolkit.load_raw_data:main" +gridpath_manual_adjustments = "data_toolkit.manual_adjustments:main" +gridpath_eiaaeo_to_fuel_chars_input_csvs = "data_toolkit.fuels.eiaaeo_to_fuel_chars_input_csvs:main" +gridpath_eiaaeo_fuel_price_input_csvs = "data_toolkit.fuels.eiaaeo_fuel_price_input_csvs:main" +gridpath_eia860_to_project_availability_input_csvs = "data_toolkit.project.availability.eia860_to_project_availability_input_csvs:main" +gridpath_create_sync_gen_weather_derate_input_csvs = "data_toolkit.project.availability.weather_derates.create_sync_gen_weather_derate_input_csvs:main" +gridpath_create_monte_carlo_gen_weather_derate_input_csvs = "data_toolkit.project.availability.weather_derates.create_monte_carlo_gen_weather_derate_input_csvs:main" +gridpath_create_availability_iteration_input_csvs = "data_toolkit.project.availability.outages.create_availability_iteration_input_csvs:main" +gridpath_eia860_to_project_specified_capacity_input_csvs = "data_toolkit.project.capacity_specified.eia860_to_project_specified_capacity_input_csvs:main" +gridpath_eia860_to_project_fixed_cost_input_csvs = "data_toolkit.project.fixed_cost.eia860_to_project_fixed_cost_input_csvs:main" +gridpath_eia860_to_project_load_zone_input_csvs = "data_toolkit.project.load_zones.eia860_to_project_load_zone_input_csvs:main" +gridpath_eia860_to_project_opchar_input_csvs = "data_toolkit.project.opchar.eia860_to_project_opchar_input_csvs:main" +gridpath_eia860_to_project_fuel_input_csvs = "data_toolkit.project.opchar.fuels.eia860_to_project_fuel_input_csvs:main" +gridpath_eia860_to_project_heat_rate_input_csvs = "data_toolkit.project.opchar.heat_rates.eia860_to_project_heat_rate_input_csvs:main" +gridpath_create_hydro_iteration_input_csvs = "data_toolkit.project.opchar.hydro.create_hydro_iteration_input_csvs:main" +gridpath_create_sync_var_gen_input_csvs = "data_toolkit.project.opchar.var_profiles.create_sync_var_gen_input_csvs:main" +gridpath_create_monte_carlo_var_gen_input_csvs = "data_toolkit.project.opchar.var_profiles.create_monte_carlo_var_gen_input_csvs:main" +gridpath_eia860_to_project_portfolio_input_csvs = "data_toolkit.project.portfolios.eia860_to_project_portfolio_input_csvs:main" +gridpath_eia930_load_zone_input_csvs = "data_toolkit.system.eia930_load_zone_input_csvs:main" +gridpath_create_sync_load_input_csvs = "data_toolkit.system.create_sync_load_input_csvs:main" +gridpath_create_monte_carlo_load_input_csvs = "data_toolkit.system.create_monte_carlo_load_input_csvs:main" +gridpath_create_temporal_iteration_csv = "data_toolkit.temporal.create_temporal_iteration_csv:main" +gridpath_create_temporal_scenarios = "data_toolkit.temporal.create_temporal_scenarios:main" +gridpath_create_monte_carlo_weather_draws = "data_toolkit.temporal.create_monte_carlo_weather_draws:main" +gridpath_create_monte_carlo_weather_draw_profiles = "data_toolkit.temporal.create_monte_carlo_weather_draw_profiles:main" +gridpath_eia930_to_transmission_load_zone_input_csvs = "data_toolkit.transmission.load_zones.eia930_to_transmission_load_zone_input_csvs:main" +gridpath_eia930_to_transmission_availability_input_csvs = "data_toolkit.transmission.availability.eia930_to_transmission_availability_input_csvs:main" +gridpath_eia930_to_transmission_specified_capacity_input_csvs = "data_toolkit.transmission.capacity_specified.eia930_to_transmission_specified_capacity_input_csvs:main" +gridpath_eia930_to_transmission_opchar_input_csvs = "data_toolkit.transmission.opchar.eia930_to_transmission_opchar_input_csvs:main" +gridpath_eia930_to_transmission_portfolio_input_csvs = "data_toolkit.transmission.portfolios.eia930_to_transmission_portfolio_input_csvs:main" +gridpath_viz_capacity_factor_plot = "viz.capacity_factor_plot:main" +gridpath_viz_capacity_new_plot = "viz.capacity_new_plot:main" +gridpath_viz_capacity_retired_plot = "viz.capacity_retired_plot:main" +gridpath_viz_capacity_total_loadzone_comparison_plot = "viz.capacity_total_loadzone_comparison_plot:main" +gridpath_viz_capacity_total_plot = "viz.capacity_total_plot:main" +gridpath_viz_capacity_total_scenario_comparison_plot = "viz.capacity_total_scenario_comparison_plot:main" +gridpath_viz_carbon_plot = "viz.carbon_plot:main" +gridpath_viz_cost_plot = "viz.cost_plot:main" +gridpath_viz_curtailment_hydro_heatmap_plot = "viz.curtailment_hydro_heatmap_plot:main" +gridpath_viz_curtailment_variable_heatmap_plot = "viz.curtailment_variable_heatmap_plot:main" +gridpath_viz_dispatch_plot = "viz.dispatch_plot:main" +gridpath_viz_energy_plot = "viz.energy_plot:main" +gridpath_viz_energy_target_plot = "viz.energy_target_plot:main" +gridpath_viz_project_operations_plot = "viz.project_operations_plot:main" + +[tool.setuptools] +include-package-data = true +# so the DB metadata can record the version +py-modules = ["version"] + +[tool.setuptools.packages.find] +# Flat layout with multiple top-level packages — auto-discovery would error, +# so list them explicitly. `ui` has no __init__.py and has never shipped in +# the wheel (its entry points work only in editable installs); `tests` is +# deliberately not packaged. +include = ["gridpath*", "db*", "viz*", "data_toolkit*"] +# find_packages() semantics: only dirs with __init__.py (the pyproject default +# of namespaces = true would pull in e.g. db/csvs_test_examples/*/doc.py) +namespaces = false + +[tool.setuptools.dynamic] +version = { attr = "version.__version__" } diff --git a/requirements.txt b/requirements.txt index 264c80003d..c0835bac15 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,22 +1,24 @@ alabaster==0.7.16 -annotated-doc==0.0.4 +annotated-doc==0.0.5 babel==2.18.0 black==26.5.1 bokeh==3.9.1 -certifi==2026.6.17 +certifi==2026.7.22 charset-normalizer==3.4.9 click==8.4.2 contourpy==1.3.3 -coverage==7.15.2 +coverage==7.15.3 coveralls==4.1.0 dill==0.4.1 docutils==0.20.1 duckdb==1.5.4 -GridPath==2026.7.1 +execnet==2.1.2 +GridPath==2026.8.0 gurobipy==13.0.2 highspy==1.15.1 idna==3.18 imagesize==2.0.0 +iniconfig==2.3.0 Jinja2==3.1.6 markdown-it-py==4.2.0 MarkupSafe==3.0.3 @@ -30,10 +32,14 @@ packaging==26.2 pandas==3.0.3 pathspec==1.1.1 pillow==12.3.0 -platformdirs==4.10.1 +platformdirs==4.11.0 +pluggy==1.6.0 pscript==0.8.1 Pygments==2.20.0 pyomo==6.10.1 +pytest==9.1.1 +pytest-cov==7.1.0 +pytest-xdist==3.8.0 python-dateutil==2.9.0.post0 pytokens==0.4.1 PyUtilib==6.0.0 @@ -54,6 +60,6 @@ sphinxcontrib-jsmath==1.0.1 sphinxcontrib-qthelp==2.0.0 sphinxcontrib-serializinghtml==2.0.0 tornado==6.5.7 -typer==0.27.0 +typer==0.27.1 urllib3==2.7.0 xyzservices==2026.3.0 diff --git a/scripts/run_tests_parallel.py b/scripts/run_tests_parallel.py new file mode 100644 index 0000000000..403f66d79e --- /dev/null +++ b/scripts/run_tests_parallel.py @@ -0,0 +1,230 @@ +# Copyright 2026 Sylvan Energy 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. + +""" +Run the GridPath test suite in three concurrent lanes, after building the +examples testing database once as a template (which the test classes then +copy instead of each rebuilding it; see set_up_test_database in +tests/test_examples.py): + +- Lane 1 (pytest-xdist): everything that is safe to run concurrently. + Each worker gets its own copy of the unittest_examples database (see + the PYTEST_XDIST_WORKER handling in tests/test_examples.py). +- Lane 2 (serial): tests/test_data_toolkit and + tests/test_run_data_toolkit.py, which regenerate committed fixture CSVs + under db/csvs_test_examples/, some of which both file sets write — so + they must not overlap each other. Nothing else reads those CSVs while + tests run (the testing database is built from them beforehand). +- Lane 3 (serial): tests/test_viz.py, which solves several example + scenarios in one setUpClass. It is self-contained (template-database + copy plus a temporary copy of the scenario directories) but gets its + own serial lane because worksteal scheduling in lane 1 would re-run + that expensive setUpClass on every worker that picks up one of its + tests. + +The three lanes touch disjoint sets of files, so they run concurrently — +except under --coverage, where they run sequentially because they would +otherwise race on the .coverage data file. + +Usage: + python scripts/run_tests_parallel.py [--coverage] + +Requires the "parallel_tests" extra (pip install -e .[parallel_tests]); +--coverage additionally requires the "coverage" extra and leaves a +combined .coverage file at the repo root covering the lanes and the +template-database build (pytest-cov measures the xdist worker processes, +which a plain "coverage run -m pytest" would miss). +""" + +import argparse +import os +import sqlite3 +import subprocess +import sys + +REPO_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + +# Tests that regenerate committed fixture CSVs under db/csvs_test_examples/ +# (lane 2) and the self-contained but expensive-setup viz tests (lane 3); +# both excluded from the pytest-xdist lane (see module docstring) +TOOLKIT_TEST_PATHS = [ + "tests/test_data_toolkit", + "tests/test_run_data_toolkit.py", +] +VIZ_TEST_PATH = "tests/test_viz.py" + + +# Where to pre-build the examples testing database that the test classes +# then copy instead of each rebuilding it from the CSVs; the path is passed +# to the test processes via this environment variable (see +# set_up_test_database in tests/test_examples.py) +DB_TEMPLATE_ENV_VAR = "GRIDPATH_TEST_EXAMPLES_DB_TEMPLATE" +DB_TEMPLATE_PATH = os.path.join(REPO_ROOT, "db", "unittest_examples_template.db") + + +def remove_template_files(sidecars_only=False): + paths = [f"{DB_TEMPLATE_PATH}-shm", f"{DB_TEMPLATE_PATH}-wal"] + if not sidecars_only: + paths.append(DB_TEMPLATE_PATH) + for path in paths: + if os.path.exists(path): + os.remove(path) + + +def run_sequentially(lanes, env): + for name, cmd in lanes: + print(f"=== {name} ===", flush=True) + returncode = subprocess.run(cmd, cwd=REPO_ROOT, env=env).returncode + if returncode != 0: + sys.exit(returncode) + + +def run_concurrently(lanes, env): + processes = [ + ( + name, + subprocess.Popen( + cmd, + cwd=REPO_ROOT, + env=env, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + text=True, + ), + ) + for name, cmd in lanes + ] + print( + "Running concurrently: " + ", ".join(name for name, _ in processes), + flush=True, + ) + failed = False + for name, process in processes: + output = process.communicate()[0] + print(f"=== {name} ===\n{output}", flush=True) + if process.returncode != 0: + failed = True + if failed: + sys.exit(1) + + +def main(args=None): + if args is None: + args = sys.argv[1:] + parser = argparse.ArgumentParser() + parser.add_argument( + "--coverage", + action="store_true", + help="measure test coverage via pytest-cov (combined .coverage " + "file at the repo root)", + ) + parser.add_argument( + "--build_template_db", + action="store_true", + help="only build the testing-database template and exit (used by " + "this script itself, so that the build can be run under coverage)", + ) + parsed_args = parser.parse_args(args) + + if parsed_args.build_template_db: + sys.path.insert(0, REPO_ROOT) + from tests.test_examples import create_test_database + + create_test_database(DB_TEMPLATE_PATH) + return + + xdist_cmd = [sys.executable, "-m", "pytest", "tests", "-n", "auto"] + xdist_cmd += ["--dist", "worksteal", "-q"] + # The --ignore paths must be absolute: some test modules os.chdir at + # import time, which happens mid-collection, and pytest resolves + # relative --ignore paths against the current working directory when + # it visits each directory — so relative ignores stop matching after + # the chdir + for path in TOOLKIT_TEST_PATHS + [VIZ_TEST_PATH]: + xdist_cmd.append("--ignore=" + os.path.join(REPO_ROOT, *path.split("/"))) + + # The serial lanes disable the pytest cache plugin so that they don't + # race the xdist lane on writing .pytest_cache + toolkit_cmd = [sys.executable, "-m", "pytest", "-q", "-p", "no:cacheprovider"] + toolkit_cmd += TOOLKIT_TEST_PATHS + viz_cmd = [sys.executable, "-m", "pytest", "-q", "-p", "no:cacheprovider"] + viz_cmd += [VIZ_TEST_PATH] + + if parsed_args.coverage: + # All lanes append: the .coverage data file already holds the + # template-database build's coverage by the time they run (any + # stale data file is erased before the build). --cov-report= + # suppresses the terminal report; the .coverage data file is what + # downstream tools (coveralls) consume + xdist_cmd += ["--cov", "--cov-append", "--cov-report="] + toolkit_cmd += ["--cov", "--cov-append", "--cov-report="] + viz_cmd += ["--cov", "--cov-append", "--cov-report="] + + lanes = [ + ("Lane 1: pytest-xdist", xdist_cmd), + ("Lane 2: data toolkit (serial)", toolkit_cmd), + ("Lane 3: viz (serial)", viz_cmd), + ] + + # Build the examples testing database once; the test classes copy it + # instead of each xdist worker rebuilding it from the CSVs. Under + # --coverage, erase any stale data file and run the build under + # coverage — the build used to happen inside the measured test + # processes, and losing it understates the coverage of the + # database-porting code + build_cmd = [sys.executable] + if parsed_args.coverage: + run_sequentially( + [ + ( + "Clearing stale coverage data", + [sys.executable, "-m", "coverage", "erase"], + ) + ], + env=None, + ) + # Omit this orchestration script itself from the measurement: only + # its --build_template_db branch runs under coverage, so including + # it would report the rest of the file as missed lines + build_cmd += ["-m", "coverage", "run", "--append", "--omit=scripts/*"] + build_cmd += [os.path.abspath(__file__), "--build_template_db"] + run_sequentially( + [("Building the testing-database template", build_cmd)], + env=None, + ) + # Copying only the .db file would silently lose any pages still sitting + # in a write-ahead log, so checkpoint the WAL into the main file and + # remove the sidecar files before anything copies the template + conn = sqlite3.connect(DB_TEMPLATE_PATH) + conn.execute("PRAGMA wal_checkpoint(TRUNCATE)") + conn.close() + remove_template_files(sidecars_only=True) + + env = os.environ.copy() + env[DB_TEMPLATE_ENV_VAR] = DB_TEMPLATE_PATH + + try: + if parsed_args.coverage: + # Sequential: concurrent lanes would race on the .coverage + # data file + run_sequentially(lanes, env=env) + else: + run_concurrently(lanes, env=env) + finally: + remove_template_files() + print("=== All tests passed ===") + + +if __name__ == "__main__": + main() diff --git a/setup.py b/setup.py deleted file mode 100644 index 71e437342c..0000000000 --- a/setup.py +++ /dev/null @@ -1,173 +0,0 @@ -from setuptools import find_packages, setup - -# Get version -version = {} -with open("./version.py") as fp: - exec(fp.read(), version) - -# Set up extras -# Note: df2img (used only by doc/opchar_img_gen.py, a standalone script that -# regenerates the checked-in opchar diagram images) is deliberately NOT -# listed here: its pandas<3.0 constraint can never be satisfied alongside -# GridPath's own pandas==3.0.3 pin in install_requires (extras are additive, -# not a replacement). Read the Docs builds straight from doc/source/conf.py -# and never touches df2img/opchar_img_gen.py, since the images are -# pre-generated and committed to doc/graphics/. To regenerate them after -# editing opchar_param_requirements.csv, install df2img in a separate -# throwaway environment (e.g. its own venv with an older pandas) and run -# opchar_img_gen.py there directly. -extras_doc = [ - "Sphinx==7.2.6", - "sphinx-argparse==0.4.0", -] - -extras_black = ["black"] - -extras_coverage = [ - "coverage", # test coverage - "coveralls", # automated coverage results -] - -extras_gurobi = ["gurobipy"] # Gurobi Python interface - -extras_all = extras_doc + extras_black + extras_coverage + extras_gurobi - -setup( - name="GridPath", - version=version["__version__"], - description="A versatile simulation and optimization platform for " - "power-system planning and operations.", - long_description=open("README.md").read(), - long_description_content_type="text/markdown", - url="https://www.gridpath.io", - project_urls={ - "Discussions": "https://github.com/sylvan-energy/gridpath/discussions", - "Documentation": "https://gridpath.readthedocs.io/en/latest/", - "Issues": "https://github.com/sylvan-energy/gridpath/issues", - "Source Code": "https://github.com/sylvan-energy/gridpath", - }, - maintainer="Sylvan Energy Analytics LLC", - maintainer_email="info@sylvan.energy", - license="Apache v2", - platforms=["MacOS", "Windows", "Linux"], - keywords=["energy", "electricity", "power", "renewables", "planning", "operations"], - packages=find_packages(), - py_modules=["version"], # so the DB metadata can record the version - install_requires=[ - "Pyomo==6.10.1", # Optimization modeling language - "pandas==3.0.3", # Data-processing - "bokeh==3.9.1", # Visualization library - "pscript==0.8.1", # Python to JavaScript compiler (for viz) - "networkx==3.6.1", # network package for DC OPF - "PyUtilib==6.0.0", # used for solver temp file management - "highspy==1.15.1", # HiGHS Python interface (default solver) - "dill==0.4.1", # pickling - "duckdb==1.5.4", # data-handling - "sphinx-rtd-theme", # documentation theme - ], - extras_require={ - "doc": extras_doc, - "all": extras_all, - "coverage": extras_coverage, - "gurobi": extras_gurobi, - }, - include_package_data=True, - entry_points={ - "console_scripts": [ - "gridpath = gridpath.cli:main", - "gridpath_run = gridpath.run_scenario:main", - "gridpath_run_parallel = gridpath.run_scenario_parallel:main", - "gridpath_run_e2e = gridpath.run_end_to_end:main", - "gridpath_get_inputs = gridpath.get_scenario_inputs:main", - "gridpath_import_results = " "gridpath.import_scenario_results:main", - "gridpath_process_results = gridpath.process_results:main", - "gridpath_validate = gridpath.validate_inputs:main", - "gridpath_run_server = ui.server.run_server:main", - "gridpath_run_queue_manager = ui.server.run_queue_manager:main", - "gridpath_create_database = db.create_database:main", - "gridpath_load_csvs = db.utilities.port_csvs_to_db:main", - "gridpath_load_scenarios = db.utilities.scenario:main", - "gridpath_get_pudl_data = " - "data_toolkit.raw_data.pudl.download_data_from_pudl:main", - "gridpath_pudl_to_gridpath_raw = " - "data_toolkit.raw_data.pudl.pudl_to_gridpath_raw_data:main", - "gridpath_get_pcm_demo_inputs = " - "data_toolkit.raw_data.get_pcm_demo_user_defined_inputs:main", - "gridpath_get_ra_toolkit_data_raw = " - "data_toolkit.raw_data.ra_toolkit.get_ra_toolkit_data:main", - "gridpath_run_data_toolkit = data_toolkit.run_data_toolkit:main", - "gridpath_load_raw_data = data_toolkit.load_raw_data:main", - "gridpath_manual_adjustments = data_toolkit.manual_adjustments:main", - "gridpath_eiaaeo_to_fuel_chars_input_csvs = " - "data_toolkit.fuels.eiaaeo_to_fuel_chars_input_csvs:main", - "gridpath_eiaaeo_fuel_price_input_csvs = " - "data_toolkit.fuels.eiaaeo_fuel_price_input_csvs:main", - "gridpath_eia860_to_project_availability_input_csvs = " - "data_toolkit.project.availability.eia860_to_project_availability_input_csvs:main", - "gridpath_create_sync_gen_weather_derate_input_csvs = " - "data_toolkit.project.availability.weather_derates.create_sync_gen_weather_derate_input_csvs:main", - "gridpath_create_monte_carlo_gen_weather_derate_input_csvs = " - "data_toolkit.project.availability.weather_derates.create_monte_carlo_gen_weather_derate_input_csvs:main", - "gridpath_create_availability_iteration_input_csvs = " - "data_toolkit.project.availability.outages.create_availability_iteration_input_csvs:main", - "gridpath_eia860_to_project_specified_capacity_input_csvs = " - "data_toolkit.project.capacity_specified.eia860_to_project_specified_capacity_input_csvs:main", - "gridpath_eia860_to_project_fixed_cost_input_csvs = " - "data_toolkit.project.fixed_cost.eia860_to_project_fixed_cost_input_csvs:main", - "gridpath_eia860_to_project_load_zone_input_csvs = " - "data_toolkit.project.load_zones.eia860_to_project_load_zone_input_csvs:main", - "gridpath_eia860_to_project_opchar_input_csvs = " - "data_toolkit.project.opchar.eia860_to_project_opchar_input_csvs:main", - "gridpath_eia860_to_project_fuel_input_csvs = " - "data_toolkit.project.opchar.fuels.eia860_to_project_fuel_input_csvs:main", - "gridpath_eia860_to_project_heat_rate_input_csvs = " - "data_toolkit.project.opchar.heat_rates.eia860_to_project_heat_rate_input_csvs:main", - "gridpath_create_hydro_iteration_input_csvs = " - "data_toolkit.project.opchar.hydro.create_hydro_iteration_input_csvs:main", - "gridpath_create_sync_var_gen_input_csvs = " - "data_toolkit.project.opchar.var_profiles.create_sync_var_gen_input_csvs:main", - "gridpath_create_monte_carlo_var_gen_input_csvs = " - "data_toolkit.project.opchar.var_profiles.create_monte_carlo_var_gen_input_csvs:main", - "gridpath_eia860_to_project_portfolio_input_csvs = " - "data_toolkit.project.portfolios.eia860_to_project_portfolio_input_csvs:main", - "gridpath_eia930_load_zone_input_csvs = " - "data_toolkit.system.eia930_load_zone_input_csvs:main", - "gridpath_create_sync_load_input_csvs = " - "data_toolkit.system.create_sync_load_input_csvs:main", - "gridpath_create_monte_carlo_load_input_csvs = " - "data_toolkit.system.create_monte_carlo_load_input_csvs:main", - "gridpath_create_temporal_iteration_csv = " - "data_toolkit.temporal.create_temporal_iteration_csv:main", - "gridpath_create_temporal_scenarios = " - "data_toolkit.temporal.create_temporal_scenarios:main", - "gridpath_create_monte_carlo_weather_draws = " - "data_toolkit.temporal.create_monte_carlo_weather_draws:main", - "gridpath_create_monte_carlo_weather_draw_profiles = " - "data_toolkit.temporal.create_monte_carlo_weather_draw_profiles:main", - "gridpath_eia930_to_transmission_load_zone_input_csvs = " - "data_toolkit.transmission.load_zones.eia930_to_transmission_load_zone_input_csvs:main", - "gridpath_eia930_to_transmission_availability_input_csvs = " - "data_toolkit.transmission.availability.eia930_to_transmission_availability_input_csvs:main", - "gridpath_eia930_to_transmission_specified_capacity_input_csvs = " - "data_toolkit.transmission.capacity_specified.eia930_to_transmission_specified_capacity_input_csvs:main", - "gridpath_eia930_to_transmission_opchar_input_csvs = " - "data_toolkit.transmission.opchar.eia930_to_transmission_opchar_input_csvs:main", - "gridpath_eia930_to_transmission_portfolio_input_csvs = " - "data_toolkit.transmission.portfolios.eia930_to_transmission_portfolio_input_csvs:main", - "gridpath_viz_capacity_factor_plot = viz.capacity_factor_plot:main", - "gridpath_viz_capacity_new_plot = viz.capacity_new_plot:main", - "gridpath_viz_capacity_retired_plot = viz.capacity_retired_plot:main", - "gridpath_viz_capacity_total_loadzone_comparison_plot = viz.capacity_total_loadzone_comparison_plot:main", - "gridpath_viz_capacity_total_plot = viz.capacity_total_plot:main", - "gridpath_viz_capacity_total_scenario_comparison_plot = viz.capacity_total_scenario_comparison_plot:main", - "gridpath_viz_carbon_plot = viz.carbon_plot:main", - "gridpath_viz_cost_plot = viz.cost_plot:main", - "gridpath_viz_curtailment_hydro_heatmap_plot = viz.curtailment_hydro_heatmap_plot:main", - "gridpath_viz_curtailment_variable_heatmap_plot = viz.curtailment_variable_heatmap_plot:main", - "gridpath_viz_dispatch_plot = viz.dispatch_plot:main", - "gridpath_viz_energy_plot = viz.energy_plot:main", - "gridpath_viz_energy_target_plot = viz.energy_target_plot:main", - "gridpath_viz_project_operations_plot = viz.project_operations_plot:main", - ] - }, -) diff --git a/tests/objective/system/reliability/__init__.py b/tests/objective/system/reliability/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/objective/system/reliability/local_capacity/test_aggregate_local_capacity_violation_penalties.py b/tests/objective/system/reliability/local_capacity/test_aggregate_local_capacity_violation_penalties.py index 3a93cdc660..928c1d74b6 100644 --- a/tests/objective/system/reliability/local_capacity/test_aggregate_local_capacity_violation_penalties.py +++ b/tests/objective/system/reliability/local_capacity/test_aggregate_local_capacity_violation_penalties.py @@ -35,7 +35,8 @@ "system.reliability.local_capacity.local_capacity_balance", ] NAME_OF_MODULE_BEING_TESTED = ( - "objective.system" ".local_capacity.aggregate_local_capacity_violation_penalties" + "objective.system.reliability" + ".local_capacity.aggregate_local_capacity_violation_penalties" ) IMPORTED_PREREQ_MODULES = list() for mdl in PREREQUISITE_MODULE_NAMES: diff --git a/tests/objective/system/reliability/prm/test_dynamic_elcc_tuning_penalties.py b/tests/objective/system/reliability/prm/test_dynamic_elcc_tuning_penalties.py deleted file mode 100644 index 1f412217cd..0000000000 --- a/tests/objective/system/reliability/prm/test_dynamic_elcc_tuning_penalties.py +++ /dev/null @@ -1,118 +0,0 @@ -# Copyright 2016-2023 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 collections import OrderedDict -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 - -TEST_DATA_DIRECTORY = os.path.join( - os.path.dirname(__file__), "..", "..", "..", "..", "test_data" -) - -# Import prerequisite modules -PREREQUISITE_MODULE_NAMES = [ - "temporal.operations.timepoints", - "temporal.investment.periods", - "temporal.operations.horizons", - "geography.load_zones", - "geography.prm_zones", - "project", - "project.capacity.capacity", - "system.reliability.prm.prm_requirement", - "project.reliability.prm", - "project.reliability.prm.prm_types", - "project.reliability.prm.elcc_surface", - "system.reliability.prm.elcc_surface", -] -NAME_OF_MODULE_BEING_TESTED = "objective.system.prm.dynamic_elcc_tuning_penalties" -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 TestDynamicELCCTuningPenalties(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, - weather_iteration="", - hydro_iteration="", - availability_iteration="", - 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, - weather_iteration="", - hydro_iteration="", - availability_iteration="", - subproblem="", - stage="", - ) - - def test_data_loaded_correctly(self): - """ - - :return: - """ - m, data = add_components_and_load_data( - prereq_modules=IMPORTED_PREREQ_MODULES, - module_to_test=MODULE_BEING_TESTED, - test_data_dir=TEST_DATA_DIRECTORY, - weather_iteration="", - hydro_iteration="", - availability_iteration="", - subproblem="", - stage="", - ) - instance = m.create_instance(data) - - # Param: dynamic_elcc_tuning_cost - self.assertEqual(instance.dynamic_elcc_tuning_cost_per_mw, 10e-10) - - -if __name__ == "__main__": - unittest.main() diff --git a/tests/project/policy/__init__.py b/tests/project/policy/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/project/policy/compliance_types/__init__.py b/tests/project/policy/compliance_types/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/system/policy/generic_policy/__init__.py b/tests/system/policy/generic_policy/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/system/policy/performance_standard/__init__.py b/tests/system/policy/performance_standard/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/system/policy/performance_standard/test_aggregate_project_performance_standard.py b/tests/system/policy/performance_standard/test_aggregate_project_performance_standard.py index b5dfed8215..8140a232bd 100644 --- a/tests/system/policy/performance_standard/test_aggregate_project_performance_standard.py +++ b/tests/system/policy/performance_standard/test_aggregate_project_performance_standard.py @@ -35,10 +35,11 @@ "system.policy.performance_standard.performance_standard", "geography.water_network", "system.water.water_system_params", + "system.water.water_nodes", "system.water.water_flows", "system.water.water_node_inflows_outflows", - "system.water.water_nodes", "system.water.reservoirs", + "system.water.water_node_balance", "system.water.powerhouses", "project", "project.capacity.capacity", diff --git a/tests/system/policy/performance_standard/test_performance_standard_balance.py b/tests/system/policy/performance_standard/test_performance_standard_balance.py index 663d045601..17d237494e 100644 --- a/tests/system/policy/performance_standard/test_performance_standard_balance.py +++ b/tests/system/policy/performance_standard/test_performance_standard_balance.py @@ -53,15 +53,7 @@ "project.operations.fuel_burn", "project.operations.performance_standard", "project.operations.carbon_emissions", - "transmission", - "transmission.capacity", - "transmission.capacity.capacity", - "transmission.availability.availability", - "transmission.operations.operational_types", - "transmission.operations.operations", - "transmission.operations.carbon_emissions", "system.policy.performance_standard.aggregate_project_performance_standard", - "system.policy.carbon_cap.aggregate_transmission_carbon_emissions", ] NAME_OF_MODULE_BEING_TESTED = ( "system.policy.performance_standard.performance_standard_balance" diff --git a/tests/system/water/test_water_flows.py b/tests/system/water/test_water_flows.py index 148cbf13be..1429f2dbbe 100644 --- a/tests/system/water/test_water_flows.py +++ b/tests/system/water/test_water_flows.py @@ -202,6 +202,28 @@ def test_data_loaded_correctly(self): } self.assertDictEqual(expected_max_bound, actual_max_bound) + # Param: threshold_side_stream_vol_per_second + df = pd.read_csv( + os.path.join(TEST_DATA_DIRECTORY, "inputs", "water_flow_tmp_bounds.tab"), + sep="\t", + ) + + # Unspecified values get the default value of infinity + df = df.replace(".", float("inf")) + df["threshold_side_stream_vol_per_second"] = pd.to_numeric( + df["threshold_side_stream_vol_per_second"] + ) + + expected_threshold = df.set_index(["water_link", "timepoint"]).to_dict()[ + "threshold_side_stream_vol_per_second" + ] + actual_threshold = { + (wl, tmp): instance.threshold_side_stream_vol_per_second[wl, tmp] + for wl in instance.WATER_LINKS + for tmp in instance.TMPS + } + self.assertDictEqual(expected_threshold, actual_threshold) + # Set: WATER_LINK_DEPARTURE_ARRIVAL_TMPS expected_wl_dp_arr_tmp = sorted( [ diff --git a/tests/test_data/inputs/water_flow_tmp_bounds.tab b/tests/test_data/inputs/water_flow_tmp_bounds.tab index 9219560cde..e2e00910ef 100644 --- a/tests/test_data/inputs/water_flow_tmp_bounds.tab +++ b/tests/test_data/inputs/water_flow_tmp_bounds.tab @@ -1,193 +1,193 @@ -water_link timepoint min_tmp_flow_vol_per_second max_tmp_flow_vol_per_second -Water_Link_12 20200101 . . -Water_Link_12 20200102 10 100 -Water_Link_12 20200103 10 100 -Water_Link_12 20200104 10 100 -Water_Link_12 20200105 10 100 -Water_Link_12 20200106 10 100 -Water_Link_12 20200107 10 100 -Water_Link_12 20200108 10 100 -Water_Link_12 20200109 10 100 -Water_Link_12 20200110 10 100 -Water_Link_12 20200111 10 100 -Water_Link_12 20200112 10 100 -Water_Link_12 20200113 10 100 -Water_Link_12 20200114 10 100 -Water_Link_12 20200115 10 100 -Water_Link_12 20200116 10 100 -Water_Link_12 20200117 10 100 -Water_Link_12 20200118 10 100 -Water_Link_12 20200119 10 100 -Water_Link_12 20200120 10 100 -Water_Link_12 20200121 10 100 -Water_Link_12 20200122 10 100 -Water_Link_12 20200123 10 100 -Water_Link_12 20200124 10 100 -Water_Link_12 20200201 10 100 -Water_Link_12 20200202 10 100 -Water_Link_12 20200203 10 100 -Water_Link_12 20200204 10 100 -Water_Link_12 20200205 10 100 -Water_Link_12 20200206 10 100 -Water_Link_12 20200207 10 100 -Water_Link_12 20200208 10 100 -Water_Link_12 20200209 10 100 -Water_Link_12 20200210 10 100 -Water_Link_12 20200211 10 100 -Water_Link_12 20200212 10 100 -Water_Link_12 20200213 10 100 -Water_Link_12 20200214 10 100 -Water_Link_12 20200215 10 100 -Water_Link_12 20200216 10 100 -Water_Link_12 20200217 10 100 -Water_Link_12 20200218 10 100 -Water_Link_12 20200219 10 100 -Water_Link_12 20200220 10 100 -Water_Link_12 20200221 10 100 -Water_Link_12 20200222 10 100 -Water_Link_12 20200223 10 100 -Water_Link_12 20200224 10 100 -Water_Link_12 20300101 10 100 -Water_Link_12 20300102 10 100 -Water_Link_12 20300103 10 100 -Water_Link_12 20300104 10 100 -Water_Link_12 20300105 10 100 -Water_Link_12 20300106 10 100 -Water_Link_12 20300107 10 100 -Water_Link_12 20300108 10 100 -Water_Link_12 20300109 10 100 -Water_Link_12 20300110 10 100 -Water_Link_12 20300111 10 100 -Water_Link_12 20300112 10 100 -Water_Link_12 20300113 10 100 -Water_Link_12 20300114 10 100 -Water_Link_12 20300115 10 100 -Water_Link_12 20300116 10 100 -Water_Link_12 20300117 10 100 -Water_Link_12 20300118 10 100 -Water_Link_12 20300119 10 100 -Water_Link_12 20300120 10 100 -Water_Link_12 20300121 10 100 -Water_Link_12 20300122 10 100 -Water_Link_12 20300123 10 100 -Water_Link_12 20300124 10 100 -Water_Link_12 20300201 10 100 -Water_Link_12 20300202 10 100 -Water_Link_12 20300203 10 100 -Water_Link_12 20300204 10 100 -Water_Link_12 20300205 10 100 -Water_Link_12 20300206 10 100 -Water_Link_12 20300207 10 100 -Water_Link_12 20300208 10 100 -Water_Link_12 20300209 10 100 -Water_Link_12 20300210 10 100 -Water_Link_12 20300211 10 100 -Water_Link_12 20300212 10 100 -Water_Link_12 20300213 10 100 -Water_Link_12 20300214 10 100 -Water_Link_12 20300215 10 100 -Water_Link_12 20300216 10 100 -Water_Link_12 20300217 10 100 -Water_Link_12 20300218 10 100 -Water_Link_12 20300219 10 100 -Water_Link_12 20300220 10 100 -Water_Link_12 20300221 10 100 -Water_Link_12 20300222 10 100 -Water_Link_12 20300223 10 100 -Water_Link_12 20300224 10 100 -Water_Link_23 20200101 10 100 -Water_Link_23 20200102 10 100 -Water_Link_23 20200103 10 100 -Water_Link_23 20200104 10 100 -Water_Link_23 20200105 10 100 -Water_Link_23 20200106 10 100 -Water_Link_23 20200107 10 100 -Water_Link_23 20200108 10 100 -Water_Link_23 20200109 10 100 -Water_Link_23 20200110 10 100 -Water_Link_23 20200111 10 100 -Water_Link_23 20200112 10 100 -Water_Link_23 20200113 10 100 -Water_Link_23 20200114 10 100 -Water_Link_23 20200115 10 100 -Water_Link_23 20200116 10 100 -Water_Link_23 20200117 10 100 -Water_Link_23 20200118 10 100 -Water_Link_23 20200119 10 100 -Water_Link_23 20200120 10 100 -Water_Link_23 20200121 10 100 -Water_Link_23 20200122 10 100 -Water_Link_23 20200123 10 100 -Water_Link_23 20200124 10 100 -Water_Link_23 20200201 10 100 -Water_Link_23 20200202 10 100 -Water_Link_23 20200203 10 100 -Water_Link_23 20200204 10 100 -Water_Link_23 20200205 10 100 -Water_Link_23 20200206 10 100 -Water_Link_23 20200207 10 100 -Water_Link_23 20200208 10 100 -Water_Link_23 20200209 10 100 -Water_Link_23 20200210 10 100 -Water_Link_23 20200211 10 100 -Water_Link_23 20200212 10 100 -Water_Link_23 20200213 10 100 -Water_Link_23 20200214 10 100 -Water_Link_23 20200215 10 100 -Water_Link_23 20200216 10 100 -Water_Link_23 20200217 10 100 -Water_Link_23 20200218 10 100 -Water_Link_23 20200219 10 100 -Water_Link_23 20200220 10 100 -Water_Link_23 20200221 10 100 -Water_Link_23 20200222 10 100 -Water_Link_23 20200223 10 100 -Water_Link_23 20200224 10 100 -Water_Link_23 20300101 10 100 -Water_Link_23 20300102 10 100 -Water_Link_23 20300103 10 100 -Water_Link_23 20300104 10 100 -Water_Link_23 20300105 10 100 -Water_Link_23 20300106 10 100 -Water_Link_23 20300107 10 100 -Water_Link_23 20300108 10 100 -Water_Link_23 20300109 10 100 -Water_Link_23 20300110 10 100 -Water_Link_23 20300111 10 100 -Water_Link_23 20300112 10 100 -Water_Link_23 20300113 10 100 -Water_Link_23 20300114 10 100 -Water_Link_23 20300115 10 100 -Water_Link_23 20300116 10 100 -Water_Link_23 20300117 10 100 -Water_Link_23 20300118 10 100 -Water_Link_23 20300119 10 100 -Water_Link_23 20300120 10 100 -Water_Link_23 20300121 10 100 -Water_Link_23 20300122 10 100 -Water_Link_23 20300123 10 100 -Water_Link_23 20300124 10 100 -Water_Link_23 20300201 10 100 -Water_Link_23 20300202 10 100 -Water_Link_23 20300203 10 100 -Water_Link_23 20300204 10 100 -Water_Link_23 20300205 10 100 -Water_Link_23 20300206 10 100 -Water_Link_23 20300207 10 100 -Water_Link_23 20300208 10 100 -Water_Link_23 20300209 10 100 -Water_Link_23 20300210 10 100 -Water_Link_23 20300211 10 100 -Water_Link_23 20300212 10 100 -Water_Link_23 20300213 10 100 -Water_Link_23 20300214 10 100 -Water_Link_23 20300215 10 100 -Water_Link_23 20300216 10 100 -Water_Link_23 20300217 10 100 -Water_Link_23 20300218 10 100 -Water_Link_23 20300219 10 100 -Water_Link_23 20300220 10 100 -Water_Link_23 20300221 10 100 -Water_Link_23 20300222 10 100 -Water_Link_23 20300223 10 100 -Water_Link_23 20300224 10 100 +water_link timepoint min_tmp_flow_vol_per_second max_tmp_flow_vol_per_second threshold_side_stream_vol_per_second +Water_Link_12 20200101 . . . +Water_Link_12 20200102 10 100 90 +Water_Link_12 20200103 10 100 95 +Water_Link_12 20200104 10 100 . +Water_Link_12 20200105 10 100 . +Water_Link_12 20200106 10 100 . +Water_Link_12 20200107 10 100 . +Water_Link_12 20200108 10 100 . +Water_Link_12 20200109 10 100 . +Water_Link_12 20200110 10 100 . +Water_Link_12 20200111 10 100 . +Water_Link_12 20200112 10 100 . +Water_Link_12 20200113 10 100 . +Water_Link_12 20200114 10 100 . +Water_Link_12 20200115 10 100 . +Water_Link_12 20200116 10 100 . +Water_Link_12 20200117 10 100 . +Water_Link_12 20200118 10 100 . +Water_Link_12 20200119 10 100 . +Water_Link_12 20200120 10 100 . +Water_Link_12 20200121 10 100 . +Water_Link_12 20200122 10 100 . +Water_Link_12 20200123 10 100 . +Water_Link_12 20200124 10 100 . +Water_Link_12 20200201 10 100 . +Water_Link_12 20200202 10 100 . +Water_Link_12 20200203 10 100 . +Water_Link_12 20200204 10 100 . +Water_Link_12 20200205 10 100 . +Water_Link_12 20200206 10 100 . +Water_Link_12 20200207 10 100 . +Water_Link_12 20200208 10 100 . +Water_Link_12 20200209 10 100 . +Water_Link_12 20200210 10 100 . +Water_Link_12 20200211 10 100 . +Water_Link_12 20200212 10 100 . +Water_Link_12 20200213 10 100 . +Water_Link_12 20200214 10 100 . +Water_Link_12 20200215 10 100 . +Water_Link_12 20200216 10 100 . +Water_Link_12 20200217 10 100 . +Water_Link_12 20200218 10 100 . +Water_Link_12 20200219 10 100 . +Water_Link_12 20200220 10 100 . +Water_Link_12 20200221 10 100 . +Water_Link_12 20200222 10 100 . +Water_Link_12 20200223 10 100 . +Water_Link_12 20200224 10 100 . +Water_Link_12 20300101 10 100 . +Water_Link_12 20300102 10 100 . +Water_Link_12 20300103 10 100 . +Water_Link_12 20300104 10 100 . +Water_Link_12 20300105 10 100 . +Water_Link_12 20300106 10 100 . +Water_Link_12 20300107 10 100 . +Water_Link_12 20300108 10 100 . +Water_Link_12 20300109 10 100 . +Water_Link_12 20300110 10 100 . +Water_Link_12 20300111 10 100 . +Water_Link_12 20300112 10 100 . +Water_Link_12 20300113 10 100 . +Water_Link_12 20300114 10 100 . +Water_Link_12 20300115 10 100 . +Water_Link_12 20300116 10 100 . +Water_Link_12 20300117 10 100 . +Water_Link_12 20300118 10 100 . +Water_Link_12 20300119 10 100 . +Water_Link_12 20300120 10 100 . +Water_Link_12 20300121 10 100 . +Water_Link_12 20300122 10 100 . +Water_Link_12 20300123 10 100 . +Water_Link_12 20300124 10 100 . +Water_Link_12 20300201 10 100 . +Water_Link_12 20300202 10 100 . +Water_Link_12 20300203 10 100 . +Water_Link_12 20300204 10 100 . +Water_Link_12 20300205 10 100 . +Water_Link_12 20300206 10 100 . +Water_Link_12 20300207 10 100 . +Water_Link_12 20300208 10 100 . +Water_Link_12 20300209 10 100 . +Water_Link_12 20300210 10 100 . +Water_Link_12 20300211 10 100 . +Water_Link_12 20300212 10 100 . +Water_Link_12 20300213 10 100 . +Water_Link_12 20300214 10 100 . +Water_Link_12 20300215 10 100 . +Water_Link_12 20300216 10 100 . +Water_Link_12 20300217 10 100 . +Water_Link_12 20300218 10 100 . +Water_Link_12 20300219 10 100 . +Water_Link_12 20300220 10 100 . +Water_Link_12 20300221 10 100 . +Water_Link_12 20300222 10 100 . +Water_Link_12 20300223 10 100 . +Water_Link_12 20300224 10 100 . +Water_Link_23 20200101 10 100 . +Water_Link_23 20200102 10 100 . +Water_Link_23 20200103 10 100 . +Water_Link_23 20200104 10 100 . +Water_Link_23 20200105 10 100 . +Water_Link_23 20200106 10 100 . +Water_Link_23 20200107 10 100 . +Water_Link_23 20200108 10 100 . +Water_Link_23 20200109 10 100 . +Water_Link_23 20200110 10 100 . +Water_Link_23 20200111 10 100 . +Water_Link_23 20200112 10 100 . +Water_Link_23 20200113 10 100 . +Water_Link_23 20200114 10 100 . +Water_Link_23 20200115 10 100 . +Water_Link_23 20200116 10 100 . +Water_Link_23 20200117 10 100 . +Water_Link_23 20200118 10 100 . +Water_Link_23 20200119 10 100 . +Water_Link_23 20200120 10 100 . +Water_Link_23 20200121 10 100 . +Water_Link_23 20200122 10 100 . +Water_Link_23 20200123 10 100 . +Water_Link_23 20200124 10 100 . +Water_Link_23 20200201 10 100 . +Water_Link_23 20200202 10 100 . +Water_Link_23 20200203 10 100 . +Water_Link_23 20200204 10 100 . +Water_Link_23 20200205 10 100 . +Water_Link_23 20200206 10 100 . +Water_Link_23 20200207 10 100 . +Water_Link_23 20200208 10 100 . +Water_Link_23 20200209 10 100 . +Water_Link_23 20200210 10 100 . +Water_Link_23 20200211 10 100 . +Water_Link_23 20200212 10 100 . +Water_Link_23 20200213 10 100 . +Water_Link_23 20200214 10 100 . +Water_Link_23 20200215 10 100 . +Water_Link_23 20200216 10 100 . +Water_Link_23 20200217 10 100 . +Water_Link_23 20200218 10 100 . +Water_Link_23 20200219 10 100 . +Water_Link_23 20200220 10 100 . +Water_Link_23 20200221 10 100 . +Water_Link_23 20200222 10 100 . +Water_Link_23 20200223 10 100 . +Water_Link_23 20200224 10 100 . +Water_Link_23 20300101 10 100 . +Water_Link_23 20300102 10 100 . +Water_Link_23 20300103 10 100 . +Water_Link_23 20300104 10 100 . +Water_Link_23 20300105 10 100 . +Water_Link_23 20300106 10 100 . +Water_Link_23 20300107 10 100 . +Water_Link_23 20300108 10 100 . +Water_Link_23 20300109 10 100 . +Water_Link_23 20300110 10 100 . +Water_Link_23 20300111 10 100 . +Water_Link_23 20300112 10 100 . +Water_Link_23 20300113 10 100 . +Water_Link_23 20300114 10 100 . +Water_Link_23 20300115 10 100 . +Water_Link_23 20300116 10 100 . +Water_Link_23 20300117 10 100 . +Water_Link_23 20300118 10 100 . +Water_Link_23 20300119 10 100 . +Water_Link_23 20300120 10 100 . +Water_Link_23 20300121 10 100 . +Water_Link_23 20300122 10 100 . +Water_Link_23 20300123 10 100 . +Water_Link_23 20300124 10 100 . +Water_Link_23 20300201 10 100 . +Water_Link_23 20300202 10 100 . +Water_Link_23 20300203 10 100 . +Water_Link_23 20300204 10 100 . +Water_Link_23 20300205 10 100 . +Water_Link_23 20300206 10 100 . +Water_Link_23 20300207 10 100 . +Water_Link_23 20300208 10 100 . +Water_Link_23 20300209 10 100 . +Water_Link_23 20300210 10 100 . +Water_Link_23 20300211 10 100 . +Water_Link_23 20300212 10 100 . +Water_Link_23 20300213 10 100 . +Water_Link_23 20300214 10 100 . +Water_Link_23 20300215 10 100 . +Water_Link_23 20300216 10 100 . +Water_Link_23 20300217 10 100 . +Water_Link_23 20300218 10 100 . +Water_Link_23 20300219 10 100 . +Water_Link_23 20300220 10 100 . +Water_Link_23 20300221 10 100 . +Water_Link_23 20300222 10 100 . +Water_Link_23 20300223 10 100 . +Water_Link_23 20300224 10 100 . diff --git a/tests/test_data/test_scenario_objective_function_values.csv b/tests/test_data/test_scenario_objective_function_values.csv index b56d892c36..d2f9d1acff 100644 --- a/tests/test_data/test_scenario_objective_function_values.csv +++ b/tests/test_data/test_scenario_objective_function_values.csv @@ -149,6 +149,7 @@ hydro_system_w_ramp_limits,"{('', 'hydro_iteration_1', '', 1): {1: -0.0}}","{('' test_w_bt_hrz_avl,"{('', '', '', 1): {1: -11138261746583.814}}","{('', '', '', 1): {1: -11138261746583.814}}",,, hydro_system_exog_elev_w_gen_ramp_limits,"{('', 'hydro_iteration_1', '', 1): {1: -0.0}}","{('', 'hydro_iteration_1', '', 1): {1: -0.0}}",,, hydro_system_exog_elev_w_binding_tmp_flow_max,"{('', 'hydro_iteration_1', '', 1): {1: -5230047626449.524}}","{('', 'hydro_iteration_1', '', 1): {1: -5230047626449.524}}",,, +hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold,"{('', 'hydro_iteration_1', '', 1): {1: -82917026358.3299}}","{('', 'hydro_iteration_1', '', 1): {1: -82917026358.3299}}",,, hydro_system_exog_elev_w_flow_and_volume_violations,"{('', 'hydro_iteration_1', '', 1): {1: -199035.00000000242}}","{('', 'hydro_iteration_1', '', 1): {1: -199035.00000000242}}",,, hydro_system_exog_elev_w_bt_hrz_inflows,"{('', 'hydro_iteration_1', '', 1): {1: -0.0}}","{('', 'hydro_iteration_1', '', 1): {1: -0.0}}",,, hydro_system_exog_elev_w_hrz_only_inflows,"{('', 'hydro_iteration_1', '', 1): {1: -0.0}}","{('', 'hydro_iteration_1', '', 1): {1: -0.0}}",,, diff --git a/tests/test_data_toolkit/test_spawn_multiprocessing_guard.py b/tests/test_data_toolkit/test_spawn_multiprocessing_guard.py index 08d2c88c6f..3cc576b10f 100644 --- a/tests/test_data_toolkit/test_spawn_multiprocessing_guard.py +++ b/tests/test_data_toolkit/test_spawn_multiprocessing_guard.py @@ -81,16 +81,22 @@ def tracking_get_context(method): mock_conn = MagicMock() mock_conn.close = MagicMock() - with patch( - "data_toolkit.project.create_monte_carlo_gen_input_csvs_common" - ".connect_to_database", - return_value=mock_conn, - ), patch( - "data_toolkit.project.create_monte_carlo_gen_input_csvs_common" ".pd.read_sql", - return_value=dummy_units, - ), patch( - "data_toolkit.project.create_monte_carlo_gen_input_csvs_common" ".get_context", - side_effect=tracking_get_context, + with ( + patch( + "data_toolkit.project.create_monte_carlo_gen_input_csvs_common" + ".connect_to_database", + return_value=mock_conn, + ), + patch( + "data_toolkit.project.create_monte_carlo_gen_input_csvs_common" + ".pd.read_sql", + return_value=dummy_units, + ), + patch( + "data_toolkit.project.create_monte_carlo_gen_input_csvs_common" + ".get_context", + side_effect=tracking_get_context, + ), ): from data_toolkit.project.create_monte_carlo_gen_input_csvs_common import ( get_monte_carlo_timeseries_project_pool_and_make_profile_csvs, diff --git a/tests/test_examples.py b/tests/test_examples.py index 2bf8641f9b..287741a548 100644 --- a/tests/test_examples.py +++ b/tests/test_examples.py @@ -19,7 +19,9 @@ import os import pandas as pd import platform +import shutil import sqlite3 +import tempfile import unittest from gridpath import run_end_to_end, run_scenario, validate_inputs @@ -31,7 +33,10 @@ # 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" +# When running in parallel via pytest-xdist, give each worker process its +# own database (PYTEST_XDIST_WORKER is e.g. "gw0"; unset in serial runs) +XDIST_WORKER = os.environ.get("PYTEST_XDIST_WORKER", "") +DB_NAME = f"unittest_examples{XDIST_WORKER}" DB_PATH = f"../db/{DB_NAME}.db" DB_SCHEMA = f"../db/db_schema.sql" DATA_DIRECTORY = "../db/data" @@ -55,6 +60,69 @@ # is ~0.125), so we also allow a relative difference OBJECTIVE_REL_TOL = 1e-9 +# A pre-built database to copy instead of building the testing database +# from the CSVs; set by scripts/run_tests_parallel.py, which builds the +# template once rather than once per pytest-xdist worker +DB_TEMPLATE_ENV_VAR = "GRIDPATH_TEST_EXAMPLES_DB_TEMPLATE" + + +def create_test_database(db_path): + """ + Build the testing database at db_path from the test-examples CSVs. + """ + if os.path.exists(db_path): + os.remove(db_path) + + create_database.main( + [ + "--database", + db_path, + "--db_schema", + DB_SCHEMA, + "--data_directory", + DATA_DIRECTORY, + ] + ) + + 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 " + "{}. Deleting database ...".format(db_path) + ) + logging.exception(e) + os.remove(db_path) + + try: + scenario.main(["--database", db_path, "--csv_path", SCENARIOS_CSV, "--quiet"]) + except Exception as e: + print( + "Error encountered during population of testing database " + "{}. Deleting database ...".format(db_path) + ) + logging.exception(e) + os.remove(db_path) + + +def set_up_test_database(db_path): + """ + Copy the pre-built template database to db_path if one has been provided + (parallel runs); otherwise build the database from the CSVs. + """ + template_path = os.environ.get(DB_TEMPLATE_ENV_VAR) + if template_path and os.path.exists(template_path): + # Clear any stale database files first: copying a fresh .db file + # next to a leftover -wal/-shm from an aborted run would corrupt it + for stale in [db_path, f"{db_path}-shm", f"{db_path}-wal"]: + if os.path.exists(stale): + os.remove(stale) + shutil.copyfile(template_path, db_path) + else: + create_test_database(db_path) + class TestExamples(unittest.TestCase): """ """ @@ -189,14 +257,17 @@ def run_and_check_objective( # (numpy floats are written as, e.g., 'np.float64(42.0)') actual_objective = objective_values_to_float(actual_objective) - # Uncomment this to save new objective function values - df = pd.read_csv(TEST_SCENARIOS_CSV, delimiter=",") - df.set_index("test_scenario", inplace=True) - # Set dtype to 'object' so that we can have floats and dictionaries - # in the column - df["actual_objective"] = df["actual_objective"].astype("object") - df.at[scenario_name, "actual_objective"] = actual_objective - df.to_csv(TEST_SCENARIOS_CSV, index=True) + # Record the actual objective in the test-scenarios CSV; skip when + # running in parallel via pytest-xdist, as concurrent whole-file + # rewrites from multiple workers would lose each other's updates + if not XDIST_WORKER: + df = pd.read_csv(TEST_SCENARIOS_CSV, delimiter=",") + df.set_index("test_scenario", inplace=True) + # Set dtype to 'object' so that we can have floats and + # dictionaries in the column + df["actual_objective"] = df["actual_objective"].astype("object") + df.at[scenario_name, "actual_objective"] = actual_objective + df.to_csv(TEST_SCENARIOS_CSV, index=True) self.assertDictAlmostEqual(expected_objective, actual_objective, places=1) @@ -206,44 +277,7 @@ 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, - "--db_schema", - DB_SCHEMA, - "--data_directory", - DATA_DIRECTORY, - ] - ) - - 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"] - ) - 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) + set_up_test_database(DB_PATH) def validate_and_test_example_generic( self, scenario_name, solver=None, skip_validation=False, additional_args=[] @@ -592,30 +626,38 @@ def test_example_single_stage_prod_cost_cycle_select(self): def test_example_multi_stage_prod_cost_parallel(self): """ Check "multi_stage_prod_cost" example running subproblems in parallel - (getting inputs and optimization) - :return: - """ - run_end_to_end.main( - [ - "--database", - DB_PATH, - "--scenario", - "multi_stage_prod_cost", - "--scenario_location", - EXAMPLES_DIRECTORY, - # "--log", - # "--write_solver_files_to_logs_dir", - # "--keepfiles", - # "--symbolic", - "--n_parallel_get_inputs", - "3", - "--n_parallel_solve", - "3", - "--quiet", - "--mute_solver_output", - "--testing", - ] - ) + (getting inputs and optimization); run in a temporary copy of the + scenario directory, so that this test doesn't write into the + examples/ directory that test_example_multi_stage_prod_cost may be + using concurrently + :return: + """ + with tempfile.TemporaryDirectory() as tmp_dir: + shutil.copytree( + os.path.join(EXAMPLES_DIRECTORY, "multi_stage_prod_cost"), + os.path.join(tmp_dir, "multi_stage_prod_cost"), + ) + run_end_to_end.main( + [ + "--database", + DB_PATH, + "--scenario", + "multi_stage_prod_cost", + "--scenario_location", + tmp_dir, + # "--log", + # "--write_solver_files_to_logs_dir", + # "--keepfiles", + # "--symbolic", + "--n_parallel_get_inputs", + "3", + "--n_parallel_solve", + "3", + "--quiet", + "--mute_solver_output", + "--testing", + ] + ) def test_example_multi_stage_prod_cost_w_hydro(self): """ @@ -1303,19 +1345,27 @@ def test_example_test_new_build_storage_itc_single_superperiod(self): def test_incomplete_only(self): """ Check that the "incomplete only" functionality works with no errors. + Run in a temporary copy of the scenario directory, so that this test + doesn't write into the examples/ directory that test_example_test + may be using concurrently. :return: """ - actual_objective = run_scenario.main( - [ - "--scenario", - "test", - "--scenario_location", - EXAMPLES_DIRECTORY, - "--quiet", - "--mute_solver_output", - "--incomplete_only", - ] - ) + with tempfile.TemporaryDirectory() as tmp_dir: + shutil.copytree( + os.path.join(EXAMPLES_DIRECTORY, "test"), + os.path.join(tmp_dir, "test"), + ) + actual_objective = run_scenario.main( + [ + "--scenario", + "test", + "--scenario_location", + tmp_dir, + "--quiet", + "--mute_solver_output", + "--incomplete_only", + ] + ) def test_example_test_w_storage_starting_soc(self): """ @@ -1729,6 +1779,21 @@ def test_hydro_system_exog_elev_w_binding_tmp_flow_max(self): scenario_name = "hydro_system_exog_elev_w_binding_tmp_flow_max" self.validate_and_test_example_generic(scenario_name=scenario_name) + def test_hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold(self): + """ + Check the timepoint-level threshold sidestream flow adjustment: same + per-timepoint max water flow bounds as + hydro_system_exog_elev_w_binding_tmp_flow_max, but with a threshold + sidestream inflow below the upstream exogenous inflows and an + upstream-node map for the bounded links, so the max flow bounds are + relaxed by (upstream inflow - threshold) in every timepoint. The + objective must improve substantially relative to the base binding + example (the caps no longer force as much unserved energy). + :return: + """ + scenario_name = "hydro_system_exog_elev_w_binding_tmp_flow_max_w_threshold" + self.validate_and_test_example_generic(scenario_name=scenario_name) + def test_hydro_system_exog_elev_w_flow_and_volume_violations(self): """ Check water system violation penalties: a horizon min flow diff --git a/tests/test_run_scenario_parallel.py b/tests/test_run_scenario_parallel.py index 7c5c06e76e..e90b72b234 100644 --- a/tests/test_run_scenario_parallel.py +++ b/tests/test_run_scenario_parallel.py @@ -12,7 +12,10 @@ # See the License for the specific language governing permissions and # limitations under the License. +import csv import os +import shutil +import tempfile import unittest from gridpath import run_scenario_parallel @@ -22,15 +25,41 @@ # paths from there os.chdir(os.path.join(os.path.dirname(__file__), "../gridpath")) +EXAMPLES_DIRECTORY = os.path.join("..", "examples") + class TestRunScenarioParallel(unittest.TestCase): def test_parallel_scenarios(self): scenarios_csv_path = os.path.join( os.getcwd(), "../tests/test_data/scenarios_to_run.csv" ) - run_scenario_parallel.main( - ["--scenarios_csv", scenarios_csv_path, "--n_parallel_scenarios", "2"] - ) + + # Run the scenarios in a temporary copy of their example + # directories, so that this test doesn't write into examples/ + # directories that concurrently running tests may also be using; + # point the scenario_location row of the scenarios CSV at the copy + with tempfile.TemporaryDirectory() as tmp_dir: + with open(scenarios_csv_path, encoding="utf-8-sig") as f: + rows = list(csv.reader(f)) + + scenario_names = rows[0][1:] + for scenario_name in scenario_names: + shutil.copytree( + os.path.join(EXAMPLES_DIRECTORY, scenario_name), + os.path.join(tmp_dir, scenario_name), + ) + + for row in rows: + if row[0] == "scenario_location": + row[1:] = [tmp_dir] * len(scenario_names) + + tmp_csv_path = os.path.join(tmp_dir, "scenarios_to_run.csv") + with open(tmp_csv_path, "w", newline="") as f: + csv.writer(f).writerows(rows) + + run_scenario_parallel.main( + ["--scenarios_csv", tmp_csv_path, "--n_parallel_scenarios", "2"] + ) if __name__ == "__main__": diff --git a/tests/test_viz.py b/tests/test_viz.py index 1582525f7e..58a5974982 100644 --- a/tests/test_viz.py +++ b/tests/test_viz.py @@ -14,11 +14,12 @@ import logging import os +import shutil +import tempfile import unittest from gridpath import run_end_to_end -from db import create_database -from db.utilities import port_csvs_to_db, scenario +from tests.test_examples import set_up_test_database from viz import ( capacity_factor_plot, capacity_new_plot, @@ -40,12 +41,21 @@ # 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" +# When running in parallel via pytest-xdist, give each worker process its +# own database (PYTEST_XDIST_WORKER is e.g. "gw0"; unset in serial runs) +XDIST_WORKER = os.environ.get("PYTEST_XDIST_WORKER", "") +DB_NAME = f"unittest_examples{XDIST_WORKER}" DB_PATH = f"../db/{DB_NAME}.db" -DB_SCHEMA = f"../db/db_schema.sql" -DATA_DIRECTORY = "../db/data" -CSV_PATH = "../db//csvs_test_examples" -SCENARIOS_CSV = os.path.join(CSV_PATH, "scenarios.csv") + +# The example scenarios solved to populate results for the plot tests +SCENARIOS_TO_RUN = [ + "test", + "test_new_solar_carbon_cap", + "2periods_new_build_rps_percent_target", + "2periods_gen_lin_econ_retirement", + "2periods_new_build_2zones", + "2horizons_w_hydro", +] class TestViz(unittest.TestCase): @@ -56,109 +66,33 @@ def setUpClass(cls): :return: """ - if os.path.exists(DB_PATH): - os.remove(DB_PATH) - - create_database.main( - [ - "--database", - DB_PATH, - "--db_schema", - DB_SCHEMA, - "--data_directory", - DATA_DIRECTORY, - ] - ) + set_up_test_database(DB_PATH) - try: - port_csvs_to_db.main( - ["--database", DB_PATH, "--csv_location", CSV_PATH, "--quiet"] + # Solve the scenarios in a temporary copy of their example + # directories, so that these runs don't write into examples/ + # directories that concurrently running tests may also be using + cls.scenarios_dir = tempfile.TemporaryDirectory() + for scenario_name in SCENARIOS_TO_RUN: + shutil.copytree( + os.path.join(EXAMPLES_DIRECTORY, scenario_name), + os.path.join(cls.scenarios_dir.name, scenario_name), ) - 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", - ] - ) + for scenario_name in SCENARIOS_TO_RUN: + run_end_to_end.main( + [ + "--database", + DB_PATH, + "--scenario", + scenario_name, + "--scenario_location", + cls.scenarios_dir.name, + "--quiet", + "--mute_solver_output", + ] + ) except Exception as e: print( "Error encountered during population of testing database " @@ -362,6 +296,7 @@ def test_project_operations_plot(self): @classmethod def tearDownClass(cls): + cls.scenarios_dir.cleanup() os.remove(DB_PATH) for temp_file_ext in ["-shm", "-wal"]: temp_file = "{}{}".format(DB_PATH, temp_file_ext) diff --git a/tests/transmission/reliability/__init__.py b/tests/transmission/reliability/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/version.py b/version.py index e44b75dea8..769e6a9657 100644 --- a/version.py +++ b/version.py @@ -1 +1 @@ -__version__ = "v2026.7.1" +__version__ = "v2026.8.0"