Skip to content

Commit 49bdcd8

Browse files
Generalized implementation of simple pumped hydro with an example/test case. This implementation requires the sequence of simple_hydro, storage in modules.txt.
My goals were modeling accuracy, backwards compatibility, avoiding redundancy, checks to aid debugging of common errors, and allow pumped hydro to participate in reserves like any other generator. Pumped hydro is different from normal hydro because of need to the track energy balance, and that average dispatch is not solely determined by average stream flow (but also includes storage decisions). It's also different from normal storage because energy tracking needs to include both stream inflow and any spilled water. In this implementation, if any pumped hydro generators are specified, the simple_hydro module will validate that the storage module is also included. The pre-existing rules for maintaining average stream flow are restricted to non-pumped hydro. Special rules for pumped hydro energy tracking and streamflow are implemented with an extra few lines in the storage energy tracking constraint, which capture the mathematical requirements of average daily balancing and additionally tracks state-of-charge. If the pumped hydro terms are not available, the storage module will skip that stanza without complaint. I also updated the storage documentation to reflect how StateOfCharge is unbound for one timepoint in each timeseries (that is, the optimization can choose to start a day with an arbitrary storage level), because I found myself having to re-read through equations to convince myself of that behavior.
1 parent 424e2e0 commit 49bdcd8

20 files changed

+183
-17
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
SYNOPSIS:
2+
3+
switch solve --verbose --log-run
4+
5+
This example illustrates modeling pumped hydro storage by using the hydro_simple module in concert with the storage module.
6+
7+
This adds pumped hydro to the hydro_simple example, and illustrates pumped hydro being used for arbitrage within each example day.
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
param base_financial_year := 2015;
2+
param interest_rate := .07;
3+
param discount_rate := .05;
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
load_zone fuel period fuel_cost
2+
South NaturalGas 2020 4
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
fuel co2_intensity upstream_co2_intensity
2+
NaturalGas 0.05306 0
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
GENERATION_PROJECT build_year gen_overnight_cost gen_fixed_om gen_storage_energy_overnight_cost
2+
S-NG_CC 2000.0 1143900.0 5868.3 .
3+
S-Central_PV-1 2000.0 2334300.0 41850.0 .
4+
S-Geothermal 1998.0 5524200.0 0.0 .
5+
Hydro 2000 10000000 100000 .
6+
Hydro_RoR 2000 1000000 100000 .
7+
Hydro_Pumped 2000 1000000 100000 0.0
8+
S-Geothermal 2020.0 5524200.0 0.0 .
9+
S-NG_CC 2020.0 1143900.0 5868.3 .
10+
S-Central_PV-1 2020.0 2334300.0 41850.0 .
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
GENERATION_PROJECT build_year gen_predetermined_cap
2+
S-NG_CC 2000 5.0
3+
S-Central_PV-1 2000 1.0
4+
S-Geothermal 1998 1.0
5+
Hydro 2000 1
6+
Hydro_RoR 2000 1
7+
Hydro_Pumped 2000 5
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
GENERATION_PROJECT gen_dbid gen_tech gen_load_zone gen_connect_cost_per_mw gen_capacity_limit_mw gen_variable_om gen_max_age gen_min_build_capacity gen_scheduled_outage_rate gen_forced_outage_rate gen_is_variable gen_is_baseload gen_is_cogen gen_energy_source gen_full_load_heat_rate gen_is_pumped_hydro gen_storage_efficiency
2+
S-Geothermal 33 Geothermal South 134222 10 28.83 30 0 0.0075 0.0241 0 1 0 Geothermal . . .
3+
S-NG_CC 34 NG_CC South 57566.6 . 3.4131 20 0 0.04 0.06 0 0 0 NaturalGas 6.705 . .
4+
S-Central_PV-1 41 Central_PV South 74881.9 2 0 20 0 0 0.02 1 0 0 Solar . . .
5+
Hydro . Hydro South 0 1 0.1 100 0 0.019 0.05 0 0 0 Water . . .
6+
Hydro_RoR . Hydro_RoR South 0 1 0 30 0 0.019 0.05 1 0 0 Water . . .
7+
Hydro_Pumped . Hydro_Pumped South 0 5 0.1 100 0 0.019 0.05 0 0 0 Water . 1 0.75
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
hydro_project timeseries hydro_min_flow_mw hydro_avg_flow_mw
2+
Hydro 2020_winter .6 .75
3+
Hydro 2020_summer .2 .6
4+
Hydro_Pumped 2020_winter .6 .75
5+
Hydro_Pumped 2020_summer .2 .6
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
LOAD_ZONE cost_multipliers ccs_distance_km dbid
2+
South 1 0 3
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
LOAD_ZONE TIMEPOINT zone_demand_mw
2+
South 1 9
3+
South 2 2.5
4+
South 3 10
5+
South 4 4

0 commit comments

Comments
 (0)