Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
11edf79
transfer from .gov
louisaserpe Apr 24, 2026
1129ae0
Clean up differences from .com main branch
louisaserpe Apr 24, 2026
0becde0
Merge branch 'main' into ls/demand_flex
louisaserpe May 19, 2026
2275248
Merge branch 'main' into ls/demand_flex
louisaserpe May 22, 2026
5284749
Add state-level shape and shift cost inputs
louisaserpe May 22, 2026
166d348
Merge branch 'main' into ls/demand_flex
louisaserpe May 29, 2026
14f19f1
add state-level dr shape cap scalar
louisaserpe May 29, 2026
c6f33ab
Merge branch 'main' into ls/demand_flex
louisaserpe Jun 1, 2026
0c79439
Add missing switch from main
louisaserpe Jun 1, 2026
0515d15
Merge branch 'main' into ls/demand_flex
louisaserpe Jun 16, 2026
15acb73
remove empty column in runfiles
louisaserpe Jun 18, 2026
36aa0b1
Merge branch 'main' into ls/demand_flex
louisaserpe Jun 18, 2026
40f0659
state to region level for supply curve shape data
louisaserpe Jun 23, 2026
0a61cef
use h5 files for increase/decrease shape fractions in inputs_case folder
louisaserpe Jun 23, 2026
6f84536
updates for state to region level dr costs
louisaserpe Jun 25, 2026
dc2c3d7
start fixes to get aggreg resolution to work with dr shape data
louisaserpe Jul 2, 2026
418fcc9
fix dr shed and shape for aggreg
louisaserpe Aug 15, 2026
273ecc6
DR fixes for aggreg resolutions
louisaserpe Aug 19, 2026
59c8d4f
fixes for dr data compatibility with aggreg resolutions
louisaserpe Aug 19, 2026
2304c4d
Merge branch 'ls/demand_flex' of github.com:ReEDS-Model/ReEDS into ls…
louisaserpe Aug 19, 2026
27085ef
fix distribution of state level dr hourly availability to region level
louisaserpe Aug 19, 2026
3b8d906
add example dr shift input data
louisaserpe Aug 20, 2026
3c35e92
Merge branch 'main' into ls/demand_flex
louisaserpe Aug 20, 2026
4d8f045
add dr shape and shift back to tech subset table
louisaserpe Aug 20, 2026
471c260
fixes after main merge
louisaserpe Sep 8, 2026
3f64886
add hourly load changes for dr shift
louisaserpe Sep 9, 2026
473508f
fix rsc_capacity_scalar for shape and shift
louisaserpe Sep 10, 2026
161146c
Merge branch 'main' into ls/demand_flex
louisaserpe Sep 10, 2026
9510c27
add shape and shift to tech agg for plots
louisaserpe Sep 11, 2026
93ada49
Add documentation
louisaserpe Sep 11, 2026
50ed630
Add shape and shift data to remote_files.csv
louisaserpe Sep 15, 2026
b8e0362
Merge branch 'main' into ls/demand_flex
louisaserpe Sep 15, 2026
a9bfb78
remove testing slack variables and forced deployment equations
louisaserpe Sep 16, 2026
49f0aaf
add back missing ;
louisaserpe Sep 17, 2026
76363d7
clean up for github tests
louisaserpe Sep 18, 2026
8e03b46
merge remote and local changes
louisaserpe Sep 21, 2026
6880075
Merge branch 'main' into ls/demand_flex
louisaserpe Sep 23, 2026
c4dfb2d
Merge branch 'main' into ls/demand_flex
louisaserpe Sep 29, 2026
23310c6
Merge branch 'main' into ls/demand_flex
louisaserpe Oct 2, 2026
311393a
Merge branch 'main' into ls/demand_flex
louisaserpe Oct 6, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ Include additional illustrative plots describing input data, methods, testing, a

<!-- Technologies -->
<!-- - [ ] Batteries: @wesleyjcole -->
<!-- - [ ] EV managed charging (EVMC): @Max-Vanatta -->
<!-- - [ ] Demand Response (DR): @louisaserpe -->
<!-- - [ ] Fossil, CCS, or DAC: @mbrown1 -->
<!-- - [ ] Geothermal: @shashwatsharma24 -->
<!-- - [ ] Hydropower or PSH: @stuartcohen8 -->
Expand Down
7 changes: 4 additions & 3 deletions cases.csv
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,8 @@ ccs_upgrade_cost_case,case in upgrade_cost_ccs_coal and upgrade_cost_ccs_gas to
coalscen,"Coal price scenario (inputs\fuelprices\{coalscen}.csv). The options for coalscen start with 'coal_' and the switch should be set to the file name, dropping 'coal' (ex: AEO_2025_reference)",AEO_2025_reference; AEO_2026_baseline; AEO_2026_altelec,AEO_2026_baseline,
demandscen,Demand scenario (see inputs\load),N/A,AEO_2026_baseline,
dr_shedscen,DR shed scenario,demo_data_January_2025,demo_data_January_2025,
evmcscen,EVMC scenario for load and supply curve and flexibility,Baseline,Baseline,
dr_shapescen,DR shed scenario,ex_dr1 ,ex_dr1,
dr_shiftscen,DR shed scenario,ex_dr1 ,ex_dr1,
geodiscov,Annual discover rates for new geothermal sites,BAU; TI,BAU,
geohydrosupplycurve,Geohydro Supply Curve,ATB_2023,ATB_2023,
egssupplycurve,EGS Supply Curve,ATB_2023; reV,reV,
Expand Down Expand Up @@ -74,7 +75,6 @@ mindev,minimum deviation for a hintage to qualify for a new bin,int,50,
unitdata,"Unit Database: ""EIA-NEMS"" for NEMS",EIA-NEMS,EIA-NEMS,
marg_vre_mw,MW for marginal VRE curt/cc calcs,N/A,1000,
marg_stor_mw,MW for marginal storage capacity credit,N/A,100,
marg_evmc_mw,MW for marginal electric vehicle managed charging (EVMC) capacity credit,N/A,100,
GSw_AnnualCap,CO2/CO2e emission cap. Turn off cap (0) or turn on CO2 only cap (1) or turn on CO2e cap (2) or include H2 leakage in CO2e cap (3) ,0; 1; 2; 3,0,
GSw_AnnualCapScen,Scenario for CO2 cap pathway (see inputs\emission_constraints\co2_cap.csv),N/A,default,
GSw_AVG_iter,Select method for choosing which iterations are used for CC/curt calculations,0; 1,1,
Expand Down Expand Up @@ -131,10 +131,11 @@ GSw_DAC_Gas,"Turn on or off the representation of gas fueled direct air capture
GSw_DAC_Gas_Case,DAC gas parameterization case (See inputs/consume/dac_gas_[GSw_DAC_Gas_Case].csv),BVRE_2021_(high|mid|low),BVRE_2021_mid,
GSw_distpv,Turn on/off distpv,0;1,1,
GSw_DRShed, switch to turn on/off demand response shed resource,0;1,0,
GSw_DRShape, switch to turn on/off demand response shape resource,0;1,0,
GSw_DRShift, switch to turn on/off demand response shift resource,0;1,0,
GSw_EFS_Flex,Switch for turning EFS load flexibility on or off,0,0,
GSw_EFS2_FlexCase,"Case used for electrification flex_type - format is {1}_{2}, where 1 in [EFS_REFERENCE, EFS_MEDIUM, EFS_HIGH, EFS_Clean2035] and 2 in [Baseflex, Currentflex, Enhancedflex, Uberflex1, Uberflex2]",N/A,EFS_MEDIUM_EnhancedflexStretch2046,
GSw_EmploymentFactor,Source for employment factor data - see inputs/employment/README.md for descriptions,^(jedi|mayfield|rutovitz|ram)$,jedi,
GSw_EVMC,Turn on adoptable EV managed charging,0; 1,0,
GSw_FakeData,Use fake capacity factor profiles (for TESTING ONLY when you do not want to download the real CF data),^[0-1]$,0,
GSw_ForcePrescription,Turn on/off forced prescriptions - turning off will allow unlimited but not free builds in historical years,0; 1,1,
GSw_GasFuelCell,Turn on/off natural gas fuel cell (ng-fuel-cell) as a technology option,0; 1,0,
Expand Down
21 changes: 21 additions & 0 deletions cases_dr.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
,Default Value,Pacific_DRShed,Pacific_DRShape,Pacific_DRShift,Pacific_st_DRShed,Pacific_st_DRShape,USA_st_DRShed,USA_st_DRShape,USA_st_DRShift,WI_st_DRShed,WI_st_DRShape,WI_st_DRShift
ignore,1,1,1,1,1,1,1,0,1,1,1,1
endyear,,2032,2032,2032,2032,2032,2040,2035,2040,2040,2040,2040
yearset,2010_2015_2020..2050..3,,,,,,2010_2015_2020..2050..5,2010_2015_2020..2050..5,2010_2015_2020..2050..5,2010_2015_2020..2050..5,2010_2015_2020..2050..5,2010_2015_2020..2050..5
GSw_Region,,cendiv/Pacific,cendiv/Pacific,cendiv/Pacific,cendiv/Pacific,cendiv/Pacific,country/USA,country/USA,country/USA,interconnect/western,interconnect/western,interconnect/western
GSw_ZoneSet,,,z132,z132,z54,z54,z54,z54,z54,z54,z54,z54
GSw_GasCurve,,2,2,2,2,2,2,2,2,2,2,2
GSw_HourlyType,,,,,,,,,,,,
GSw_OpRes,,,,,,,,,,,,
GSw_HourlyNumClusters,,,,,,,,,,,,
GSw_PRM_CapCredit,,,,,,,,,,,,
GSw_StartCost,,,,,,,,,,,,
GSw_LfillGas,,,,,,,,,,,,
GSw_Geothermal,,,,,,,,,,,,
GSw_Biopower,,,,,,,,,,,,
GSw_Nuclear,,,,,,,,,,,,
GSw_HourlyChunkLengthRep,,,,,,,,,,,,
GSw_HourlyChunkLengthStress,,,,,,,,,,,,
GSw_DRShed,,1,,,1,,1,,,1,,
GSw_DRShape,,,1,,,1,,1,,,1,
GSw_DRShift,,,,1,,,,,1,,,1
2 changes: 1 addition & 1 deletion cases_test.csv
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
,Default Value,Pacific,USA_defaults,Mid_Case,USA_decarb,github_Pacific,github_Everything,github_MA_county_CC,Pacific_CC,Pacific_weks,Pacific_full_year,Interday_storage,Pacific_2020,Pacific_rep15,WY_county,WECC_county,PJM_county_CC,NYVT_mixed,OR_water,MonteCarlo_Random,MonteCarlo_LHS,Everything,Simple,USA_fast,USA_faster,MultiMetricRA,Pacific_DR,Pacific_MGA,Pacific_MGA_RV,Pacific_LoadSite95,MARICTNYNJPAOH_Offshore,R2P
ignore,1,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
ignore,1,1,,,,1,0,1,,,,,,,,,,,,,,,,,,,,,,,,
GSw_Region,cendiv/Pacific,,country/USA,country/USA,country/USA,,st/ID.WY.NE.IA.IL,st/MA,,,,,,,st/WY,interconnect/western,transreg/PJM,st/NY.VT,st/OR,st/NE.NY.PA,st/NE.NY.PA,st/ID.WY.NE.IA.IL,st/KS,country/USA,country/USA,st/NY.NJ,,,,,st/MA.RI.CT.NY.NJ.PA.OH,
endyear,2035,,2050,2050,2050,2030,2060,2030,,,,,,,,,,,2035,2030,2030,2060,2035,2050,2050,2050,,,,,,
yearset,,,,,,,2010..2060..10,,,,,,,,,,,,,,,2010..2060..10,2010_2015_2020..2050..3,,2010_2025_2050,,,,,,,
Expand Down
23 changes: 20 additions & 3 deletions docs/source/model_documentation.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ National Laboratory of the Rockies. ({{ cite_date_last_updated }}). *Model docum
| dGen | Distributed Generation Market Demand model |
| DNI | direct normal insolation |
| DOE | U.S. Department of Energy |
| DR | demand response
| DSIRE | Database of State Incentives for Renewables and Efficiency |
| EAC | energy attribute credit |
| EGS | enhanced geothermal system |
Expand Down Expand Up @@ -1795,15 +1796,31 @@ The `GSw_RetailAdder` switch (default 0, units of [2004\$/MWh]) adds a cost adde

### Demand Response

Demand response (DR) is turned off by default in ReEDS, but the user has the option to enable DR via load shedding.
The demonstration data used to characterize the amount of load shedding available were obtained from a workflow which includes ResStock, DR-Path, and dsgrid.
The data reflect the technical potential for residential load shedding in 11 states (AZ, CA, CO, FL, GA, MN, MT, NM, NY, TX, WA) and were developed using the 2018 weather year.
Unlike other generation or storage technologies, demand response (DR) contributes to system supply-demand balance through the management of demand-side loads.
Load management can be facilitated by different types of signals and responses on different timescales and with different types of communication.
For example, price-responsive dispatch mechanisms like time-of-use rates or real-time pricing involve one-way communication of prices that electricity users and/or their devices can use to inform consumption decisions.
On the other hand, direct load control programs often involve two-way communications between a utility or an aggregator and devices (e.g., thermostat, electric vehicle charger, industrial equipment) whose consumption patterns are modified to shed or shift load away from peak or reliability event times.
ReEDS represents price-responsive DR as a resource that modifies load based on exogenous shapes and represents direct load control programs as dispatchable shed or shift resources.

DR is turned off by default in ReEDS, but the user has the option to enable DR via three types of demand response resources.

#### Load Shedding

The demonstration data used to characterize the amount of load shedding avaiable were obtained from a workflow which includes ResStock, DR-Path, and dsgrid. The data reflect the technical potential for residential load shedding in 11 states (AZ, CA, CO, FL, GA, MN, MT, NM, NY, TX, WA) and were developed using the 2018 weather year.
Through this implementation the demand response is effectively added as a new supply curve-based resource; however, the DR shed potential is only available during stress periods.
If ReEDS chooses to dispatch DR shed, the "generation" from the resource is subtracted from the load considered in the resource adeqaucy calculations.
The capital costs for the residential resource are derived from the installation cost for the DR-enabling technology (program implementation or procurement costs are not included).
In addition to only allowing the shed resource to be dispatched during stress periods, a max daily capacity factor is defined.
For the residential heating and cooling resources the max daily capacity factor is set to 4 hours per day.

#### Adoptable Load Shape Modification

This load management method reflects price-responsive demand response resources and is classified as a DR Shape technology in the model. DR-Shape is implemented in ReEDS as an endogenous flexibility resource rooted in pre-computed shape profiles that characterize the potential for deferred demand. The resource is represented as hourly time series of fractions describing two quantities: the share of load that can be delayed away from its baseline hour ("generation," in the sense of load reduction), and the corresponding additional load that appears in a later hour when the deferred energy is consumed. These fractional profiles are coupled with the adopted DR Shape capaicty the model chooses to invest in, with the upper bound on adoptable capacity informed by the MW quantity of load eligible to participate in demand response. In the model, the DR-Shape "generation" fraction is subtracted from the load in the hours when deferral occurs, while the "load" fraction is added back in the hours when deferred energy is recovered, such that net energy consumption is conserved. These adjusted load profiles — reflecting both the reduction and the payback — are also carried through to the Probabilistic Resource Adequacy Suite (PRAS), so that the reliability assessment accounts for the modified load shape produced by DR-Shape adoption.

#### Load Shifting

DR-Shift is implemented in ReEDS as an endogenous flexibility resource that represents load-shifting potential through a storage-like formulation with time-dependent charge and discharge bounds. Rather than pre-computing fixed shape profiles, DR-Shift is characterized by three inputs: a discharge profile defining the baseline load available to be deferred in each hour (equivalent to immediate consumption if the resource is not participating in demand response), a charge profile defining the outer bound on when deferred energy can be recovered (the latest possible payback window), and an energy profile defining the maximum cumulative quantity of load that could have been deferred from previous hours. Within the ReEDS optimization, DR-Shift is dispatched endogenously subject to three constraints: a capacity constraint ensuring that resource use does not exceed time-varying availability, a storage level constraint that tracks the state of charge of the DR-Shift device, and a duration constraint ensuring that the storage level does not exceed the time-varying energy capacity at any hour. This formulation is intended to reflect direct load control programs in which a utility or aggregator can shift flexible end-use loads — such as water heating, space conditioning, or electric vehicle charging — within bounded windows, conserving net energy consumption while allowing the optimization to determine the least-cost dispatch timing across the planning horizon.

## Transmission

ReEDS considers two categories of transmission: "local interconnection" of generation capacity within the model zones and "interzonal" or "long-distance" transmission between the model zones.
Expand Down
8 changes: 6 additions & 2 deletions docs/source/user_guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -141,9 +141,13 @@ For EER’s load profiles, “weather” includes everything considered by NLR's

Demand response is turned off by default. To enable it the following switches are needed:

- `GSw_DRShed`: turns on/off the demand response resource
- `GSw_DRShed`: turns on/off the demand response shed resource
- `GSw_MaxDailyCF` : turns on/off daily maximum capacity factor constraint
- `dr_shedscen`: scenario to define which scalars will be used for the supply curve cost and capacity
- `dr_shedscen`: scenario to define which scalars will be used for the supply curve cost and capacity, VOM, FOM, and hourly profile
- `GSw_DRShape`: turns on/off the demand response shape resource
- `dr_shapescen`: scenario to define which scalars will be used for the supply curve cost and capacity, VOM, FOM, and hourly profiles
- `GSw_DRShift`: turns on/off the demand response shift resource
- `dr_shiftscen`: scenario to define which scalars will be used for the supply curve cost and capacity, VOM, FOM, and hourly profiles

## Hydrogen inputs

Expand Down
4 changes: 2 additions & 2 deletions inputs/degradation/degradation_annual_default.csv
Original file line number Diff line number Diff line change
Expand Up @@ -56,5 +56,5 @@ egs_allkm_1*egs_allkm_10,0
geohydro_allkm_1*geohydro_allkm_10,0
egs_nearfield_1*egs_nearfield_10,0
dr_shed_1*dr_shed_2,0
evmc_storage_1*evmc_storage_10,0
evmc_shape_1*evmc_shape_10,0
dr_shape_1*dr_shape_2,0
dr_shift_1*dr_shift_2,0
35 changes: 33 additions & 2 deletions inputs/demand_response/README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,36 @@
## Demand Response Input Files

- `dr_shed_avail_scalar.csv`:
### DR Shed Input Files

- `dr_shed_capacity_scalar_demo_data_January_2025.csv`:
- **`dr_shed_hourly_{dr_shedscen}.h5`**: Hourly DR shed resource availability.
- **`inputs/supply_curve/dr_shed_cost_{dr_shedscen}.csv`**: Supply curve cost [$/MW]. Represents the installation cost for the DR-enabling technology (program implementation or procurement costs are not included) in 2020 dollars.
- **`inputs/plant_characteristics/dr_shed_capcost_scalars_{dr_shedscen}.csv`**: Supply curve populated with 2030 cost data, scaled in the model to reflect additional years through 2050.
- **`inputs/supply_curve/dr_shed_cap_{dr_shedscen}.csv`**: Supply curve capacity [MW], populated with maximum technical potential in 2030 for each ReEDS zone from the hourly shed data.
- **`inputs/demand_response/dr_shed_capacity_scalar_{dr_shedscen}.csv`**: Supply curve populated with 2030 capacity data, scaled in the model to reflect additional years through 2050.
- **`inputs/plant_characteristics/dr_shed_vom_{dr_shedscen}.csv`**: Variable operation and maintenance costs for the DR Shed resource [$/MWh].
- **`inputs/plant_characteristics/dr_shed_fom_{dr_shedscen}.csv`**: Fixed operation and maintenance costs for the DR Shed resource [$/MWh].
- **`inputs/demand_response/dr_shed_avail_scalar.csv`**: Scalar representing the response rate of the resource by decrementing availability. Set to 1 by default.
- **`inputs/plant_characteristics/maxdailycf.csv`**: Defines the maximum daily capacity factor for any technology. Default is 4 hours per day for DR shed (0.167 = 4/24).

### DR Shape Input Files

- **`dr_shape_decrease_profile_{dr_shapescen}.h5`**: Hourly time series of fractions representing the amount of “generation” (load that can be delayed).
- **`dr_shape_increase_profile_{dr_shapescen}.h5`**: Hourly time series of fractions representing the amount of added load in a later hour (deferred).
- **`inputs/supply_curve/dr_shape_cost_{dr_shapescen}.csv`**: Supply curve cost [$/MW]. Assumed to be 0 in the demonstration data.
- **`inputs/supply_curve/dr_shape_cap_{dr_shapescen}.csv`**: Supply curve capacity [MW], populated with maximum technical potential in 2030 for each state from the hourly shape data.
- **`inputs/plant_characteristics/dr_shape_cost_scalars_{dr_shapescen}.csv`**: Supply curve populated with 2030 cost data, scaled in the model to reflect additional years through 2050.
- **`inputs/demand_response/dr_shape_capacity_scalar_{dr_shapescen}.csv`**: Supply curve populated with 2030 capacity data, scaled in the model to reflect additional years through 2050.
- **`inputs/plant_characteristics/dr_shape_vom_{dr_shapescen}.csv`**: Variable operation and maintenance costs for the DR Shape resource [$/MWh].
- **`inputs/plant_characteristics/dr_shape_fom_{dr_shapescen}.csv`**: Fixed operation and maintenance costs for the DR Shape resource [$/MWh].

### DR Shift Input Files

- **`dr_shift_decrease_profile_{dr_shiftscen}.h5`**: Baseline/discharge profile of DR resource available to be deferred (or immediate charging/use if not participating in DR).
- **`dr_shift_increase_profile_{dr_shiftscen}.h5`**: Outer bound on when DR resource can be shifted (or latest possible charging/payback).
- **`dr_shift_energy_profile_{dr_shiftscen}.h5`**: Deferment/flexibility potential.
- **`inputs/supply_curve/dr_shift_cost_{dr_shiftscen}.csv`**: Supply curve cost [$/MW]. Assumed to be 0 in the demonstration data.
- **`inputs/supply_curve/dr_shift_cap_{dr_shiftscen}.csv`**: Supply curve capacity [MW], populated with maximum technical potential in 2030 for each state from the hourly shift data.
- **`inputs/plant_characteristics/dr_shift_cost_scalars_{dr_shiftscen}.csv`**: Supply curve populated with 2030 cost data, scaled in the model to reflect additional years through 2050.
- **`inputs/demand_response/dr_shift_capacity_scalar_{dr_shiftscen}.csv`**: Supply curve populated with 2030 capacity data, scaled in the model to reflect additional years through 2050.
- **`inputs/plant_characteristics/dr_shift_vom_{dr_shiftscen}.csv`**: Variable operation and maintenance costs for the DR Shift resource [$/MWh].
- **`inputs/plant_characteristics/dr_shift_fom_{dr_shiftscen}.csv`**: Fixed operation and maintenance costs for the DR Shift resource [$/MWh].
Loading
Loading