Skip to content

Comments

Reproducible Water Heater Results & Thermal Tech Prioritization Scheme#469

Merged
dpinney-nreca merged 96 commits intonreca-bts:masterfrom
astronobri:master
Feb 17, 2026
Merged

Reproducible Water Heater Results & Thermal Tech Prioritization Scheme#469
dpinney-nreca merged 96 commits intonreca-bts:masterfrom
astronobri:master

Conversation

@astronobri
Copy link
Contributor

Thermal Tech Prioritization

At times where multiple thermal technologies are competing for charge time, the derUtilityCost and derConsumer models will now enact a prioritization scheme (WH > AC > HP) that only allows the highest priority tech to charge and discharge at those times. All other thermal tech, if enabled, are removed from charging/discharging at those times.

Reproducible Water Heater Results

Variability in the water heater results appear to come from random numbers generated in omf.solvers.VB which are used to describe a water draw rate (gallons per minute). If desired, a user can now have the derUtilityCost, derConsumer, and vbatDispatch models reproduce the same water heater results. 

Some notable changes include a user-provided input to set the PuLP optimizer random seed for all thermal vbatDispatch technologies, and a new user-provided input water_heater_random_numbers.csv which allows the user to reproduce the water heater results, if desired.

Code Changes

VB solver

  • added random_numbers input to the water heater code that is used to determine the water draw rate
  • random_numbers=None by default, and the solver will generate and return the random numbers used
  • If random_numbers is provided, the model will use those provided values instead of generating them

vbatDispatch model

  • added input for the PuLP optimizer random seed value for all thermal technologies
  • added input for a water heater random numbers CSV file
  • added Use the user-provided random numbers? input to allow the use of the water heater random numbers CSV file
  • remove old input files if they exist
  • saves the water_heater_random_numbers.csv file to the model directory

derUtilityCost and derConsumer models

  • Incorporated the new functionality for the water heater random numbers and PuLP optimizer random seed
  • Save all vbatDispatch input and output data in the model directory for each thermal technology enabled. No longer will create separate subdirectories to store these files
  • Thermal technologies are now prioritized when there is competition for charge time (WH > AC > HP), meaning only the highest priority tech are allowed to charge and discharge. Any other thermal tech, if enabled, are removed from charging/discharging at times where there is charge competition.

vbatStacked

  • Accepts the new returned variable wh_random_numbers from the changes to the VB solver

Static Test Files

Added water_heater_random_numbers.csv static test file for the derConsumer, derUtilityCost, and vbatDispatch models

astronobri added 30 commits July 2, 2025 14:40
… out the discharging and charging power series.
…at facility demand charge tariff information from the REopt custom tariff JSON response file.
…nput and removed user input start/stop times. Fixed bug in demand $/kW output arrays.
…to ensure 8760 length, and removed demand schedule info from TOD-.json to be consistent with TOD-.csv until this functionality is included in the model code.
… array of monthly demand charges using the corresponding static test files.
…JSON response file for the total demand and energy savings with and without DERs
…ctor Fval for DER demand savings for a demand rate structure on hourly timescales. Replaced the max peak kW index method in Fval calculation with max ($ amount = peak kW x rate $/kW) to account for variable hourly rates.
…onse file handling function, clarified output variables in need of changing for new Fval implementation
…) to Total Peak Demand (kW) and Total Adjusted Peak Demand (kW), and added the max kW for each period window to the total monthly kW demand.
…the outputs, renamed savings variables for clarity, and fixed fval calculation for total utility savings and individual TESS tech in the CSV input method
…ology demand savings. Fixed bug in individual TESS tech incentives. Added new example Wholesale Rate Structure JSON response file.
…SV method is selected. Added error warnings for CSV input.
… cost savings for JSON and CSV input methods.
…ut name, added error message handling for no BESS in REopt and input JSON decode error.
… to both inputs of BESS energy capacity (kWh) and BESS power capacity (kW). Modified BESS SOC plot title.
…nd savings for both CSV and JSON input methods, and disabled GEN by default.
…ss new demand peaks caused by decoupled runs competing for charge.
…umbers for determining the water heater water draw rate
…om numbers functionality from the VB solver changes
…d input, and saved the inputs and outputs of each vbatDispatch run in the model directory instead of separate subdirectories.
…nput, and saved the inputs and outputs of each vbatDispatch run in the model directory instead of separate subdirectories. Also stated REopt run without sys image.
@dpinney-nreca dpinney-nreca merged commit f22c071 into nreca-bts:master Feb 17, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants